![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| isergey |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 28.5.2008 Репутация: нет Всего: нет |
В общем событием назовем какое-либо условие, которое настанет через некоторое время.
Допустим, событием может быть условие, что в некоторой очереди есть содержимое, или же настал некоторой момент времени, например 12:00. Случаев много. Одним из решений данной проблемы является циклический вызов функции проверки(неважно в основной программе или в отдельном потоке):
Такая проверка плоха тем, что она грузит процессор. Проблема загрузки процессора решается путем вставки в тело цикла системного вызова sleep():
Это тоже плохо. Во-первых, непонятно на сколько уснет процесс(поток), во-вторых, при вызове sleep() поток может усыпить и основную программу, например в виндовсе засыпает только поток вызвавший sleep(), в то время на unix засыпает весть процесс. Хотелось бы узнать, как изящно решить эту проблему. У меня есть идеи по этому поводу, но хотелось бы узнать ваше мнение. |
||||
|
|||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
В схожей задаче делал именно так:
... на unix засыпает весть процесс ... думаю, должен быть какой-нибудь workaround, потому что такое поведение - это полный бред. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Для этого есть thread'ы и примитивы синхронизации, такие как Event, Semaphore, Conditional Variable. В разных системах это обзывается по разному (и имеет разный API), но суть одна. Еще можно покопать в boost'е - там как в Греции, все есть
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |