Главная страница
    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
15-1355231463
boriskb
2012-12-11 17:11
2013.04.14
Российские школьники лидируют в изучении математики


15-1355730455
Vegeta
2012-12-17 11:47
2013.04.14
Мультиварка или хлебопечка?


15-1355949002
Юрий
2012-12-20 00:30
2013.04.14
С днем рождения ! 20 декабря 2012 четверг


2-1349542966
FIL-23
2012-10-06 21:02
2013.04.14
Как установить компоненты


2-1349897717
Anariem
2012-10-10 23:35
2013.04.14
Перемещение Label





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