Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.22;
Скачать: CL | DM;

Вниз

Handles и Named Pipes   Найти похожие ветки 

 
Fiend ©   (2002-07-11 16:54) [0]

Такая вот проблема:
Создаю именованный канал блокирующем в режиме (с флагом PIPE_WAIT). Когда выполняю ему ConnectNamedPipe, то он соответственно не завершает выполнение этой функции, а ждёт подключения клиента. Всё это выполняется в отдельном потоке.
Возникает такая ситуация когда мне нужно закрыть канал, причём просто сделать CloseHandle не помогает, т.к. в этот момент поток с каналом застыл на операции ConnectNamedPipe, и выполнение этой операции приводит к ожиданию потоком вызывающим CloseHandle, пока не завершится ConnectNamedPipe.

В принципе я эту проблему решаю так: подключаюсь к каналу из другого потока к каналу нужного трэда, предварительно установив в потоке переменную, определяющую необходимость завершения работы потока. Всё работает нормально. Но всё же хочется услышать мнение, может есть более простой способ убить канал, а за ним и поток. Именно "убить", т.к. мне на момент этой необходимости, мне уже не важны никакие данные ни канала, ни потока.

ЧТО СКАЖЕТЕ, УВАЖАЕМЫЕ


 
Eugene Lachinov ©   (2002-07-11 17:14) [1]

Наверно, использовать второй параметр функции ConnectNamedPipe


 
Игорь Шевченко ©   (2002-07-11 17:15) [2]

Я бы сделал неблокированный канал...
Или SetNamedPipeHandleState для разблокировки.


 
Fiend ©   (2002-07-11 17:19) [3]

То Игорь Шевченко
это было бы неплохо, но дело в том что его как раз надо закрыть когда выполняется ожидание коннекта, и если выполнить настройку хэндла, то поток замирает на этой операции и ждёт видимо освобождения хэндла


 
Игорь Шевченко ©   (2002-07-11 17:22) [4]

Fiend © (11.07.02 17:19)

Я работал с неблокированными и асинхронными каналами. Потому более полно ответить затрудняюсь :-(


 
Fiend ©   (2002-07-11 17:25) [5]

а вот интересная вещь происходит:

Как же система уничтожает хэндлы на мои каналы, когда я завершаю приложение, но сам каналы за собой не закрываю.

КАК ЕЙ ЭТО УДАЁТСЯ????

Может есть какое нибудь средство типа KillHandle(сам придумал).


 
Игорь Шевченко ©   (2002-07-11 17:27) [6]

Fiend © (11.07.02 17:25)


> Может есть какое нибудь средство типа KillHandle(сам придумал).


Примерно так...У всех объектов, числящихся за процессом, при завершении процесса уменьшается счетчик использования. Если счетчик стал равен 0, то объект удаляется.


 
Fiend ©   (2002-07-11 17:35) [7]

То Игорь Шевченко

Можно как то управлять этим процессом?


> Примерно так...У всех объектов, числящихся за процессом,
> при завершении процесса уменьшается счетчик использования.
> Если счетчик стал равен 0, то объект удаляется.




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

Текущий архив: 2002.07.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
8-70835
Olgerd
2002-03-15 20:08
2002.07.22
Текст на прозрачной фоне.


14-70900
Pag
2002-06-21 21:45
2002.07.22
Сокеты


3-70580
Егор
2002-06-26 20:51
2002.07.22
Проблема с Lookup field, помогите...


3-70644
NNH
2002-07-01 19:19
2002.07.22
Как считать String из Memo до символа # ?


1-70763
Alex-A
2002-07-04 12:02
2002.07.22
Извлечь из Icl - иконку