| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Проверка на событие |
| Автор: isergey 13.5.2009, 18:05 | ||||
| В общем событием назовем какое-либо условие, которое настанет через некоторое время. Допустим, событием может быть условие, что в некоторой очереди есть содержимое, или же настал некоторой момент времени, например 12:00. Случаев много. Одним из решений данной проблемы является циклический вызов функции проверки(неважно в основной программе или в отдельном потоке):
Такая проверка плоха тем, что она грузит процессор. Проблема загрузки процессора решается путем вставки в тело цикла системного вызова sleep():
Это тоже плохо. Во-первых, непонятно на сколько уснет процесс(поток), во-вторых, при вызове sleep() поток может усыпить и основную программу, например в виндовсе засыпает только поток вызвавший sleep(), в то время на unix засыпает весть процесс. Хотелось бы узнать, как изящно решить эту проблему. У меня есть идеи по этому поводу, но хотелось бы узнать ваше мнение. |
| Автор: Rififi 13.5.2009, 19:47 | ||
В схожей задаче делал именно так:
... на unix засыпает весть процесс ... думаю, должен быть какой-нибудь workaround, потому что такое поведение - это полный бред. |
| Автор: xvr 14.5.2009, 11:31 |
| Для этого есть thread'ы и примитивы синхронизации, такие как Event, Semaphore, Conditional Variable. В разных системах это обзывается по разному (и имеет разный API), но суть одна. Еще можно покопать в boost'е - там как в Греции, все есть |