2009-07-31 3 views
0

Un organisme quelconque a-t-il implémenté un moniteur avec signalisation (threads d'attente de réveil) en utilisant un mutex et des variables de condition en C++.Implémentation de Monitor avec signalisation à l'aide de mutex et variable de condition en C++

Je ne sais pas comment démarrer. Tout exemple de code ou d'article en ligne sera génial. Y a-t-il des bibliothèques Open Source qui les ont implémentées?

J'ai besoin de Windows et Linux. Mais pour commencer avec Windows (win32) ira bien.

+0

J'ai mis à jour mon message. – San

+0

Désolé, mais quelle est votre question, écrire un code portable pour les mutex et les conditions ou apprendre à les utiliser? – Ben

+0

Je voulais la classe monitor avec une signalisation en C++ qui utilise des mutex et des variables de condition. Rédaction d'un cours de moniteur sur mon propre aurait été difficile et fastidieux aussi. J'étais sûr que quelqu'un l'aurait implémenté, mais était incapable de le trouver. J'ai donc posté cette question. – San

Répondre

2

This Qt Quarterly article explique comment faire en utilisant QMutex et QWaitCondition de Qt. Mais vous devriez être en mesure de ré-écrire avec quelque classe mutex que vous voulez utiliser ..

Voir aussi l'exemple plus avancé dans here ..

+0

+1 article très clair, et très facile à appliquer à d'autres boîtes à outils – iain

0

Toute la programmation de threads que j'ai faite en C++ utilisait pthreads, qui a les blocs de construction fondamentaux dont vous avez besoin. Ce article traite de l'utilisation de ces blocs de construction pour les moniteurs

Pour une raison quelconque, le lien ne fonctionne pas, collez la même URL dans un navigateur et c'est le cas.

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

Le lien ne fonctionne pas. – San

+0

Bizarre ... l'URL fonctionne. – djna

0

bibliothèque d'abstraction de la plate-forme de Mozilla NSPR (Portable Runtime Netscape) a une abstraction du moniteur qui est multi-plateforme. C'est une implémentation "réelle" (actuellement utilisée dans Firefox par exemple) donc ce n'est pas simple. Mais c'est un moniteur.

Source: prmon.c, prmon.h

Documentation: prmon.html

2

Découvrez boost::thread::condition_variable ainsi que des échantillons. Il peut être utilisé pour attendre la condition avec ou sans temporisation. Je pense que c'est une solution assez élégante qui devrait faire exactement ce dont vous avez besoin dans ce cas, et le faire de manière portable.

Questions connexes