#include #include #include "Thread.h" using namespace std; class Multiplicateur : public Thread { public: Multiplicateur(int x, vector *binaire); void run(); void giveNumber(int nb); void inventaire(); private: const int m_x; vector *m_binaire; }; Multiplicateur::Multiplicateur(int x, vector *binaire) : m_x(x), m_binaire(binaire) { createLockMutex("nb"); unlockMutex("nb"); } void Multiplicateur::run() { while (1==1) giveNumber(m_x); } void Multiplicateur::giveNumber(int nb) { if ( lockMutex("nb") ) { m_binaire->push_back(nb); unlockMutex("nb"); } } void inventaire(vector *binaire) { int nb[3]; nb[0] = nb[1] = nb[2] = 0; while (!binaire->empty()) { nb[(*binaire)[binaire->size()-1]]++; binaire->pop_back(); } cout << "Il y a eu "<* tableau(0); tableau = new vector(0); Multiplicateur process1(1, tableau), process2(2, tableau); process1.start(); process2.start(); for (int i(0); i<10000; i++) process1.giveNumber(0); process1.stop(); process2.stop(); inventaire(tableau); delete tableau; return 0; }