![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
(Berkeley-style sockets) теория
GanibalLector © (2006-01-21 18:37:00)Предположим сервер выполнил Accept для нового клиента и создал поток.Рано или поздно поток завершится и (по всем правилам) я должен выполнить CloseHandle. И как быть... создавать еще один поток,который будет отслеживать смерть потоков и вызывать CloseHandle ???
И еще,предположим я хочу передать некоторую структуру в создаваемый поток. Делаю так :
type
TMode=record
Sock:Cardinal;
Addr:TSockAddr;
end;
PMode = ^TMode;
...
var Val:PMode;
begin
...
GetMem(Val,SizeOf(TMode));
Val.Sock:=AcceptedSock;
Val.Addr:=Addr;
BeginThread(nil,0,@ProcessSockEvents,PMode(Val),0,ThId);
//FreeMem(Val)
Опять таки,если не сделать FreeMem(Val),то будет утечка.Если сделать,то будет еще большая беда. Как быть?
GanibalLector (2006-01-21 19:33:00) [1]2 GuAV © (21.01.06 19:08) [1]
Спасибо!
>при чём тут сабж и конференция Сети ?
Бывает ;)
И еще. Как известно ф-ции Send,Recv имеют 3 параметра. Меня,собственно,интересует третий. Т.е флаг установленный в MSG_OOB. Изменится ли при этом скорость приема\передачи, если по пути следования пакета имеется некоторое оборудование(свичи,хабы). Более того,в некоторых литературных источниках и конференциях настоятельно рекомендуют ВОЗДЕРЖАТЬСЯ от использования MSG_OOB. Как быть?
GuAV (2006-01-21 19:08:00) [2]
> Рано или поздно поток завершится и (по всем правилам)
> я должен выполнить CloseHandle.
CloseHandle чего ? потока ?
Если тебе не нужен хендл потока, закрывай этот хендл сразу - делов... ТипаCloseHandle(BeginThread( ...
Если где-то сохраняешь, то оттуда и закрывай.
>
> BeginThread(nil,0,@ProcessSockEvents,PMode(Val),0,ThId)
>;
> //FreeMem(Val)
>
> Опять таки,если не сделать FreeMem(Val),то будет
> утечка.Если сделать,то будет еще большая беда. Как
> быть?
Освобождать в том потоке. После вызова BeginThread менеджер памяти гарантированно будет в потокобезопасном режиме, а если не был бы то и из своего потока освобождать не было бы безопасно.
Только при чём тут сабж и конференция Сети ?