Реализация Monitor с сигнализацией с использованием мьютекса и условной переменной в C ++ - PullRequest
0 голосов
/ 31 июля 2009

Был ли какой-либо орган реализовал Монитор с сигнализацией (ожидание потоков ожидания), используя мьютекс и условные переменные в C ++.

Я не знаю с чего начать. Любой пример кода или онлайн статья будет отличной. Существуют ли библиотеки с открытым исходным кодом, которые их реализовали?

мне нужно для windows и linux. Но начать с windows (win32) будет хорошо.

Ответы [ 5 ]

2 голосов
/ 31 июля 2009

Извлечение boost :: thread :: condition_variable вместе с образцами. Его можно использовать для ожидания условия с таймаутом или без него. Я думаю, что это довольно элегантное решение, которое должно делать именно то, что вам нужно в этом случае, и делать это переносимым способом.

2 голосов
/ 31 июля 2009

В этой ежеквартальной статье Qt объясняется, как это сделать, используя Qt QMutex и QWaitCondition. Но вы должны иметь возможность переопределить его любым классом мьютекса, который вы хотите использовать.

См. Также более сложный пример в здесь ..

0 голосов
/ 31 июля 2009

Я сделал один здесь для систем posix: http://asgaard.homelinux.org/svn/cpp/threadqueue/ Здесь есть вариант C: http://asgaard.homelinux.org/wordpress/?p=9

0 голосов
/ 31 июля 2009

Библиотека абстракций платформы Mozilla NSPR (Netscape Portable Runtime) имеет абстракцию монитора, которая является кроссплатформенной. Это «настоящая» реализация (фактически используемая в Firefox, например), поэтому она не простая. Но это монитор.

Источник: prmon.c , prmon.h

Документация: prmon.html

0 голосов
/ 31 июля 2009

Все потоки программирования, которые я делал в C ++, использовали pthreads, у которых есть фундаментальные строительные блоки, которые вам нужны. В этой статье рассматривается использование этих строительных блоков для мониторов

.

По какой-то причине ссылка не работает, вставьте тот же URL-адрес в браузер, и она работает.

http://findarticles.com/p/articles/mi_m0VVT/is_10_2/ai_n24998136/
...