boost::thread... corrigez moi. - C++ - Programmation
MarshPosté le 11-04-2005 à 15:20:13
Voila typiquement le code que je souhaiterais faire tourner.... Parce qu'un boost::mutex est non copiable, comment je fais pour utiliser un objet thread safe dans un boost::thread ? Ma soltion (que je ne donne pas encore) cause un assert à l'execution : assert généré au sein du fichier source mutex.impl.
Merci de votre aide.
Code :
#include"windows.h"
#include"boost/thread/thread.hpp"
using namespace boost;
#include<cassert>
#include<iostream>
using namespace std;
typedef mutex::scoped_lock lock;
// une classe thread safe basée sur un mutex BOOST
struct value
{
void set( boolconst & arg )
{
lock lk( mtx );
val = arg;
}
bool get()
{
lock lk( mtx );
return val;
}
private:
bool val;
mutex mtx;
};
// f crée une instance de la classe value et l'utilise...
struct f
{
voidoperator()()
{
v.set( true );
Sleep(1000);
assert( v.get() == true );
v.set( false );
Sleep(1000);
assert( v.get() == false );
}
private:
value v;
};
// g crée simplement un thread de type f
struct g
{
voidoperator()()
{
f f_inst;
thread th( f_inst); // ERREUR, MUTEX NON COPIABLE !!!!!
Marsh Posté le 11-04-2005 à 15:20:13
Voila typiquement le code que je souhaiterais faire tourner.... Parce qu'un boost::mutex est non copiable, comment je fais pour utiliser un objet thread safe dans un boost::thread ? Ma soltion (que je ne donne pas encore) cause un assert à l'execution : assert généré au sein du fichier source mutex.impl.
Merci de votre aide.