Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
(Модератор:
Вад
) > Тема:
Трубы, потоки, еще потоки...
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Трубы, потоки, еще потоки... (Прочитано 6995 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Daniloff
Помогающий
Offline
Трубы, потоки, еще потоки...
«
:
22-10-2007 09:23 »
Мучаюсь с NamedPipes.
Программа-сервер открывает pipe и ждет приходящих сообщений. Ждать может дооолго...
На момент ожидания программа оказывается замороженной. А это нежелательно, ибо - окно.
Ладно, вставим pipe в поток. Но как сказать этому потоку, что ожидание закончено?
Или заморочиться с overlapped?
Записан
RXL
Технический
Администратор
Offline
Пол:
Re: Трубы, потоки, еще потоки...
«
Ответ #1 :
22-10-2007 13:39 »
Daniloff
, а просто прервать работу потока разве нельзя?
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Scorp__)
Молодой специалист
Offline
Пол:
Re: Трубы, потоки, еще потоки...
«
Ответ #2 :
22-10-2007 14:09 »
Daniloff
, приходящие сообщения ожидаются по WaitForSingleObject скорее всего. Так вот Можно просто завести еще одно событие (Event), которое будет выставляться по окончании работы. В потоке сделать WaitForMultipleObjects и если выставилось событие окончания работы - сворачивать поток.
RXL
, вроде бы просто прерывать работу потока извне не рекомендуется, мало ли чего поток там навыделял и чего делает, даже функции нет для этого, кроме наглого убийства среди бела дня TerminateThread, но даже в ее описании написано, что "использовать только в случае зависания потока". Лучше всего, на мой взгляд, флаг завершения работы, если поток циклический, или событие, если поток в ожидании, тогда поток сможет завершиться корректно.
Записан
- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
Daniloff
Помогающий
Offline
Re: Трубы, потоки, еще потоки...
«
Ответ #3 :
22-10-2007 15:36 »
Scorp__)
, спасибо, я вспомнил, именно так все и делал!
Но сейчас пытаюсь сделать то же самое на C#, а там все по другому
Вместо WaitForMultipleObjects какие-то system.threading.wait
«
Последнее редактирование: 22-10-2007 15:38 от Daniloff
»
Записан
Scorp__)
Молодой специалист
Offline
Пол:
Re: Трубы, потоки, еще потоки...
«
Ответ #4 :
22-10-2007 20:13 »
Ну если уж прижмет, то и под .NET когда пишешь можно апишными функциями пользоваться.
А вообще system.threading.WaitHanldle и статический метод этого класса WaitAny - вот рецепт для C# и .NET
Записан
- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
(Модератор:
Вад
) > Тема:
Трубы, потоки, еще потоки...
Загружается...