![]() |
|
Модераторы: xvr |
![]()
|
|
| GorbunovDiman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
Здраствуйте!
У меня такой вопрос: Есть поток, в нем у одного оператора есть таймаут(короче select для сокетов) Можно ли сделать так, чтобы один поток(управляющий) заставил другой(в котором select) не дожидаться окончания выполнения этого опрератора, а переходить к следующему за ним? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
GorbunovDiman, нет.
|
|||
|
||||
| GorbunovDiman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
А хотя-бы, можно ли заставить искуственно сработать таймаут у select'а?
Или, хотя-бы, добовлять дескрипторы в множество из другого потока на "лету"(хотя это, на мой взгляд, черевато ошибками)? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
GorbunovDiman, поставь небольшой таймаут и обновляй список периодически.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
стандартный способ push'инга событий: засовываем конец пайпа, eventfd (или еще чего-то аналогичного) в select/poll/epoll... когда нужен принудительный wake up кидаем байт в конец пайпа -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| GorbunovDiman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
А можно то-же самое но по подробнее , а то я не совсем понял У меня появился ещё такой вариант: Создать стопсокет и записать его дискриптор в множество exceptfds select'а . НО! Кукую можно сделать безабидную ошибку в этом сокете, чтобы и select сработал , и программа не упала? Добавлено через 1 минуту и 34 секунды А что такое пайп вообще? |
|||
|
||||
| GorbunovDiman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
Этот ваариант оказался рабочим ! Сделал парный сокет AF_UNIX и записал его дискриптор в readfds(а не exceptfds). Получилась так называемая локальная петля.Но кто нибудь знает как это отражается на времени работы? И есть ли простые методы работующие быстрее? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
GorbunovDiman, пайп (канал) - это что-то вроде одностороннего неименованного сокета. Читай mkpipe. Вариант с пайпами лучше, чем с сокетами - так как проще организуется.
|
|||
|
||||
| GorbunovDiman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
А как это переносится на другие платформы? |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
хуже, чем сокеты ;) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |