Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-1108930962
syte_ser78
2005-02-20 23:22
2005.03.13
турпоездка


4-1107195222
Ландграф Павел
2005-01-31 21:13
2005.03.13
Ввести в поле чужой программы свой текст


11-1092467454
Dmitry
2004-08-14 11:10
2005.03.13
Не работают хинты в KOL


4-1107253055
grigory
2005-02-01 13:17
2005.03.13
Как по процессу узнать заголовок окна?


1-1109051804
Dil
2005-02-22 08:56
2005.03.13
TTreeView Nodes





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский