Форум: "WinAPI";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизCreateThread-очередной глупый вопрос Найти похожие ветки
← →
sergeiA (2005-02-01 09:02) [0]Как передать параметр функции? Делаю так:
var
a:Cardinal;
ThreadProc(Lp:Cardinal):Cardinal;
begin
//
end;
вызываю:
CreateThread(nil,0,@ThreadProc,Pointer(a),0,id);
Нить запускается, но из процедуры я никак не могу увидеть то что ей передавал. Что я не так делаю?
← →
Digitman © (2005-02-01 09:09) [1]
> Что я не так делаю?
function ThreadProc(Lp:Cardinal):Cardinal; stdcall;
← →
kaZaNoVa © (2005-02-01 09:31) [2]думаю и так можно ..
var
a:Cardinal;
ThreadProc(Lp:Cardinal):Cardinal;stdcall;
begin
//
end;
вызываю:
CreateThread(nil,0,@ThreadProc,@a,0,id);
← →
Alex Konshin © (2005-02-01 10:11) [3]И скорее всего тебе нужно использовать BeginThread вместо CreateThread
← →
VsInLg (2005-02-01 10:21) [4]Ну и какая хрен разница?????????
function BeginThread(SecurityAttributes: Pointer; StackSize: LongWord;
ThreadFunc: TThreadFunc; Parameter: Pointer; CreationFlags: LongWord;
var ThreadId: LongWord): Integer;
var
P: PThreadRec;
begin
New(P);
P.Func := ThreadFunc;
P.Parameter := Parameter;
IsMultiThread := TRUE;
Result := CreateThread(SecurityAttributes, StackSize, @ThreadWrapper, P,
CreationFlags, ThreadID);
end;
← →
Digitman © (2005-02-01 10:27) [5]
> VsInLg (01.02.05 10:21) [4]
> Ну и какая хрен разница?????????
разница весьма ощутима
она - вот в этой строчке:
IsMultiThread := TRUE
← →
VsInLg (2005-02-01 10:30) [6]>она - вот в этой строчке:
>IsMultiThread := TRUE
И на что это влияет? Как это можно ощутить? Если не секрет, конечно!
← →
VsInLg (2005-02-01 10:33) [7]Переменная такая есть, Да. Но на ее изменение не только ничего не влияет, а даже ни одна функция ее не использует.
>она - вот в этой строчке:
>IsMultiThread := TRUE
как говориться: "Слышал звон, да не знаю о чем он"
← →
Digitman © (2005-02-01 10:51) [8]
> VsInLg (01.02.05 10:33) [7]
значение этой переменной используется стандартным встроенным ран-тайм менеджером памяти от Борланда
если IsMultiThread = TRUE, менеджер безусловно синхронизирует (выполняет последовательно) операции по распределению/перераспределению/освобождению памяти (SysGetMem/SysReallocMem/SysFreemem) .. эти операции могут быть запрошены (явно или неявно) в произвольные моменты времени любым из трэдов процесса приложения, при IsMultiThread = FALSE вероятность конфликтов одновременно запрошенных операций заведомо ненулевая, при IsMultiThread = TRUE конфликты исключены.
← →
Digitman © (2005-02-01 10:54) [9]
> Слышал звон, да не знаю о чем он
о чем "звон" - о том, кстати, в станд.справке подробно написано
← →
VsInLg (2005-02-01 10:59) [10]>Digitman
Такой тебе пример: поставь эту переменную в тру и наоборот запусти пошагово приложение, открой CPU и посмотри что измениться. Если ты скажешь что дело не в коде, а меняется принцип, то ты хочешь сказать, что эта переменная меняет принцип WIN32 системы взаимодействия со стеком нитей(твоих тредов)...
← →
Digitman © (2005-02-01 11:10) [11]
> эта переменная меняет принцип WIN32 системы взаимодействия
> со стеком нитей
при чем здесь WIN32 и стеки нитей ?
ты вообще понимаешь концепцию, назначение, принцип работы/использования/взаимодействия с win32-кучами борландовского менеджера памяти ?
← →
Digitman © (2005-02-01 11:18) [12]
> VsInLg
в окно CPU даже заглядывать не нужно
вот фрагмент getmem.inc
function SysGetMem(size: Integer): Pointer;
// Allocate memory block.
var
f, prev, next: PFree;
u: PUsed;
begin
...
try
if IsMultiThread then EnterCriticalSection(heapLock);
...
использование крит.секции видишь ?
вот она-то и синхронизирует операции с памятью, если IsMultiThread = TRUE
← →
VsInLg (2005-02-01 11:24) [13]Друг мой, Digitman! А кто тебе сказал, что борланд сам управляет памятью? Или же все приложения скомпилированные им сидят на нулевом кольце? И приложению подвластно все и вся? Все таки советую открыть CPU и посмотреть, что там происходит...
← →
Набережных С (2005-02-01 11:40) [14]>VsInLg (01.02.05 11:24) [13]
>Все таки советую
Советую поменьше советовать, и побольше слушать и думать.
← →
VsInLg (2005-02-01 11:43) [15]>Набережных С
Забавно!!! Советую не советовать... хм
Можно пополнять список крылатых выражений, особенно армейских
← →
Erik1 © (2005-02-01 11:45) [16]to VsInLg
Ты чего совсем ничего непонипаеш или под дурачка косиш?
← →
Набережных С (2005-02-01 11:46) [17]>VsInLg (01.02.05 11:43) [15]
Булгакова читал? Шарикова напоминаешь в сцене за обедом. Ну там, где про этого...как его...Энгельса с этим...да чтоб его...Каутским. Извини за прямоту.
← →
Макс (2005-02-01 11:49) [18]не ребята, свои проблемы решайте сами. мож кто знает что такое прагматизм?
← →
Digitman © (2005-02-01 12:05) [19]
> VsInLg (01.02.05 11:24) [13]
> Друг мой, Digitman!
чей-то ты меня в "друзья" записал ?
> кто тебе сказал, что борланд сам управляет памятью?
сам Борланд мне и сказал.
в виде исх.текстов.
а тебе, видимо, Борланд ничего не сказал.
Или ты исх.тексты его не умеешь читать, за незнанием букв ..
> Или же все приложения скомпилированные им сидят на нулевом
> кольце?
какое нафих "нулевое кольцо" ? ты о чем, сударь ?).. это из иной оперы !
> Все таки советую открыть CPU и посмотреть, что там происходит
ты дурью-то не майся !
я тебе дал ссылку на модуль, где исп-ся идент-р IsMultiThread.
ЧТО тебе еще не понятно ?
> И приложению подвластно все и вся?
если приложение использует документированные возможности системы - нет, не все.
← →
Digitman © (2005-02-01 12:06) [20]
> Набережных С (01.02.05 11:46) [17]
хорошая ассоциация... уместная) ..
← →
Digitman © (2005-02-01 12:11) [21]
> VsInLg
чудик, ты в исх.тексты Борланда хоть смотрел хоть раз, а ?
← →
VsInLg (2005-02-01 12:30) [22]А вот оскорблять меня тебе никто такого права не давал. Если общаешься в форумах, то будь так любезен вести себя корректно, здесь обсуждаются вопросы связанные с программированием, а не с личностными качествами по исключительно субъективному мнению. Если не можешь себя нормально вести, то за чем это всем показывать?
Думаешь, что мне от этого обидно будет? Каждый может про любого написать что угодно, и это будет абсолютно безнаказанно, за исключением того, что некоторые слова не пройдут.
Может хочешь мне это в лицо сказать?...
← →
Digitman © (2005-02-01 12:35) [23]
> VsInLg (01.02.05 12:30) [22]
> А вот оскорблять меня тебе никто такого права не давал
равно как и тебе никто не давал права публично меня в "друзья" записывать.
а getmem.inc все же изучи.
до полного просветления.
после этого и подискутируем.
Ок ?
← →
VsInLg (2005-02-01 12:41) [24]Друг мой // смотреть в словаре...
← →
Digitman © (2005-02-01 13:06) [25]
> VsInLg (01.02.05 12:41) [24]
еще раз - ДУРЬЮ не майся.
есть MSDN.
есть Борланд, который в случае генерации исп.кода под ОС от Майкрософт - никуда от MSDN ..
← →
kaZaNoVa © (2005-02-01 13:39) [26]я раньше Креате.. юзал .. ща на Бегин.. "подсел", не жалею))
однако иногда всё-же надо юзать Креате .. ))
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.04 c