![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка создания дополнительного потока. [D7, WinXP]
GanibalLector © (2010-01-27 12:06:00)Скажите, а стоит ли проверять ? Я не встречал случаев, когда поток не запускался.
Проверяю, кстати, так :
в самом теле треда первой строкой идет
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 14:59:00) [1]
> GanibalLector © (27.01.10 13:05) [5]
> Создается хендл, но нити нет? Или получу NULL при BeginThread
> ?
Для дельфи 6 -
хендл создается - нить есть, но не значит, что она тут же будет запущена и получит управление, на то воля ОС.
BeginThread возвращает результат CreateThread - если вернет NULL, значит нить не создана. В теории возможна ситуация, когда из BeginThread выход будет по исключению (Exception при New).
Мне кажется кода с Event'ом будет достаточно для проверки, что нить получила(получала) управление.
Игорь Шевченко (2010-01-27 14:35:00) [2]
> Т.е. как мне контролировать ?
Win32Check(returnHandle <> 0)
GanibalLector (2010-01-27 13:05:00) [3]Понял. Тогда расскажите, что происходит.
> 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 12:46:00) [4]> Это случай с сокетами ?
По барабану с чем.
Поток не может быть создан, если недостаточно ресурсов для его создания.
А уж куда испарились эти ресурсы - то совсем иной вопрос.
GanibalLector (2010-01-27 12:28:00) [5]
> Стоит обязательно, я как раз периодически встречаюсь с ситуацией
> когда нить не создается из-за нехватки системных ресурсов.
> ..
Это случай с сокетами ? Когда каждая нить обслуживает отдельный сокет клиента ?
Rouse_ (2010-01-27 12:24:00) [6]Стоит обязательно, я как раз периодически встречаюсь с ситуацией когда нить не создается из-за нехватки системных ресурсов...
Игорь Шевченко (2010-01-27 12:11:00) [7]стоит