Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Очередь и два потока


Автор: Goganchic 13.10.2008, 15:35
Всем привет!
Программирую под ОС MS Windows. У меня такая задача: есть очередь сообщений (не стандартная а своя) и два потока: один из них пишет сообщения, а другой должен обрабатывать сообещния по мере поступления. Я вижу несколько способов реализации:
  • тупой способ, когда читающий поток проверяет очередь через определенные промежутки времени
  • использование windows event-ов для нотификации читающего потока
Имхо, использовать callback-и здесь не получится, ибо при использовании callback-ов работу будет выполнять не читающий, а пишущий поток
Может стоит использовать какую-то библиотеку типа Boost или libevent? У кого-нибудь есть идеи по этому поводу?
Заранее спасибо за ответы.

Автор: Lazin 13.10.2008, 16:13
ты сам ответил на свой вопрос, нужно использовать события. поток обрабатывающий данные(consummer) должен ждать события, а поток производящий(producer) - устанавливать, нужно либо синхронизировать доступ к очереди, что-бы не нарушить ее целостность либо использовать что то вроде tbb::concurrent_queue из intel threading building blocks

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)