Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2013.04.14;
Скачать: [xml.tar.bz2];

Вниз

Проверка создания дополнительного потока.   Найти похожие ветки 

 
GanibalLector ©   (2010-01-27 12:06) [0]

Скажите, а стоит ли проверять ? Я не встречал случаев, когда поток не запускался.

Проверяю, кстати, так :

в самом теле треда первой строкой идет
SetEvent(Event);

...
 var FEvent:THandle;
 P:PJobThread;
begin
 Result:=True;
 FEvent:=CreateEvent(nil,True,False,nil); // евент для результута
 ResetEvent(FEvent);
 New(P);
 P^.SocketDial:= Self;
 P^.Event:=FEvent;
 FJobThread:=BeginThread(nil, 0, MsgThread, P, 0, FJobThreadID);
 case WaitForSingleObject(FEvent,2000) of
   WAIT_OBJECT_0:;
   else
   begin
     Result:=False;
     Exception.Create(sCannotStart);
   end;
 end;
 CloseHandle(FEvent);
end;


Т.е. интересуют, прежде всего, мнения на счет стоит или не стоит. Спасибо !


 
Игорь Шевченко ©   (2010-01-27 12:11) [1]

стоит


 
Rouse_ ©   (2010-01-27 12:24) [2]

Стоит обязательно, я как раз периодически встречаюсь с ситуацией когда нить не создается из-за нехватки системных ресурсов...


 
GanibalLector ©   (2010-01-27 12:28) [3]


> Стоит обязательно, я как раз периодически встречаюсь с ситуацией
> когда нить не создается из-за нехватки системных ресурсов.
> ..


Это случай с сокетами ? Когда каждая нить обслуживает отдельный сокет клиента ?


 
Сергей М. ©   (2010-01-27 12:46) [4]

> Это случай с сокетами ?

По барабану с чем.
Поток не может быть создан, если недостаточно ресурсов для его создания.
А уж куда испарились эти ресурсы - то совсем иной вопрос.


 
GanibalLector ©   (2010-01-27 13:05) [5]

Понял. Тогда расскажите, что происходит.


> If the function succeeds, the return value is a handle to
> the new thread.
> If the function fails, the return value is NULL.


Создается хендл, но нити нет? Или получу NULL при BeginThread ?
Т.е. как мне контролировать ? Моего кода с Event"ом достаточно будет ?


 
Игорь Шевченко ©   (2010-01-27 14:35) [6]


> Т.е. как мне контролировать ?


Win32Check(returnHandle <> 0)


 
Вариант   (2010-01-27 14:59) [7]


> GanibalLector ©   (27.01.10 13:05) [5]



> Создается хендл, но нити нет? Или получу NULL при BeginThread
> ?

Для дельфи 6 -
хендл создается - нить есть, но не значит, что она тут же будет запущена и получит управление, на то воля ОС.
BeginThread возвращает результат CreateThread - если вернет NULL, значит нить не создана. В теории возможна ситуация, когда из BeginThread выход будет по исключению (Exception при New).
Мне кажется  кода с Event"ом будет достаточно для проверки, что нить получила(получала) управление.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2013.04.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
4-1264407457
QAZ
2010-01-25 11:17
2013.04.14
uac + действия или


15-1355862609
Юрий
2012-12-19 00:30
2013.04.14
С днем рождения ! 19 декабря 2012 среда


15-1355814263
alexdn
2012-12-18 11:04
2013.04.14
Фон в пхп


15-1355337472
Игорь Шевченко
2012-12-12 22:37
2013.04.14
Люди, которые пишут begin..end вокруг одного оператора


2-1349379021
qwerty123
2012-10-04 23:30
2013.04.14
TreeView и системные иконки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский