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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
1-70810
relict
2002-07-10 09:31
2002.07.22
разрешения экрана...


1-70821
iii
2002-07-10 15:20
2002.07.22
Реестр. Как избежать ошибки?


1-70720
Leviathan
2002-07-11 15:37
2002.07.22
TCalendar и язык в названиях месяцев


1-70829
~E~R~R~O~R~
2002-07-10 19:52
2002.07.22
INI!!!!


1-70709
katy8
2002-07-11 13:09
2002.07.22
почта (кодировка) NMSMTP





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