Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пропуск оператора в потоке, как заставить поток перескакивать через  
:(
    Опции темы
GorbunovDiman
Дата 5.3.2011, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 3.3.2008

Репутация: нет
Всего: нет



Здраствуйте!

У меня такой вопрос: Есть поток, в нем у одного оператора есть таймаут(короче select для сокетов)
Можно ли сделать так, чтобы один поток(управляющий) заставил другой(в котором select) не дожидаться окончания выполнения этого опрератора, а переходить к следующему за ним?
PM MAIL   Вверх
bsa
Дата 5.3.2011, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



GorbunovDiman, нет.
PM   Вверх
GorbunovDiman
Дата 6.3.2011, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 3.3.2008

Репутация: нет
Всего: нет



А хотя-бы,  можно ли заставить искуственно сработать таймаут у select'а?
 Или, хотя-бы, добовлять дескрипторы в множество из другого потока на "лету"(хотя это, на мой взгляд, черевато ошибками)?
PM MAIL   Вверх
bsa
Дата 7.3.2011, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



GorbunovDiman, поставь небольшой таймаут и обновляй список периодически.
PM   Вверх
MAKCim
Дата 8.3.2011, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(GorbunovDiman @  6.3.2011,  11:04 Найти цитируемый пост)
Или, хотя-бы, добовлять дескрипторы в множество из другого потока на "лету"(хотя это, на мой взгляд, черевато ошибками)? 

стандартный способ push'инга событий: засовываем конец пайпа, eventfd (или еще чего-то аналогичного) в select/poll/epoll...
когда нужен принудительный wake up кидаем байт в конец пайпа


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GorbunovDiman
Дата 8.3.2011, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 3.3.2008

Репутация: нет
Всего: нет



Цитата

стандартный способ push'инга событий: засовываем конец пайпа, eventfd (или еще чего-то аналогичного) в select/poll/epoll...
когда нужен принудительный wake up кидаем байт в конец пайпа 


А можно то-же самое но по подробнее , а то я не совсем понял smile 

У меня появился ещё такой вариант:
Создать стопсокет и записать его дискриптор в множество  exceptfds select'а .
НО! Кукую можно сделать безабидную ошибку в этом сокете, чтобы и select сработал , и программа не упала?

Добавлено через 1 минуту и 34 секунды
А что такое пайп вообще? smile 
PM MAIL   Вверх
GorbunovDiman
Дата 8.3.2011, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 3.3.2008

Репутация: нет
Всего: нет



Цитата

Создать стопсокет и записать его дискриптор в множество  exceptfds select'а .


Этот ваариант оказался рабочим ! Сделал парный сокет AF_UNIX и записал его дискриптор в readfds(а не exceptfds). Получилась так называемая локальная петля.Но кто нибудь знает как это отражается на времени работы? И есть ли простые методы работующие быстрее?
PM MAIL   Вверх
bsa
Дата 8.3.2011, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



GorbunovDiman, пайп (канал) - это что-то вроде одностороннего неименованного сокета. Читай mkpipe. Вариант с пайпами лучше, чем с сокетами - так как проще организуется.
PM   Вверх
GorbunovDiman
Дата 9.3.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 3.3.2008

Репутация: нет
Всего: нет



Цитата

. Вариант с пайпами лучше, чем с сокетами

А как это переносится на другие платформы?
PM MAIL   Вверх
MAKCim
Дата 10.3.2011, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(GorbunovDiman @  9.3.2011,  20:14 Найти цитируемый пост)
А как это переносится на другие платформы? 

хуже, чем сокеты ;)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.