hier verwende ich ein eingekapseltes
Code: Alles auswählen
#ifndef MY_SIGNAL_H
#define MY_SIGNAL_H
#include <QtCore/QMutex>
#include <QtCore/QWaitCondition>
class MySignalCondition
{
public:
MySignalCondition( void ){}
void prepare( void ) { m_mutex.lock(); }
void trigger( void ) {
m_mutex.lock();
m_wait_condition.wakeOne();
m_mutex.unlock();
}
void wait( void ){
m_wait_condition.wait( &m_mutex);
m_mutex.unlock();
}
private:
MySignalCondition( const MySignalCondition & );
QMutex m_mutex; ///< Mutex for function call synchronisation.
QWaitCondition m_wait_condition; ///< Wait contition for function call synchronisation.
}; #endif //EOF
Klasse2(Klasse1 &my_K1)
: ref_K1(my_K1) {}
Weiterhin habe ich in Klasse1 eine Methode, welche eine MYSignalCondition benutzt:
Code: Alles auswählen
int Klasse1::get_Traffic_Light_Edge()
{
int t_edgeID = -1;
// Im Header steht ... MySignalCondition mySignalCondition;
this->mySignalCondition.prepare();
DispatchEvent( "TriggerTrafficLight" , t_edgeID);
this->mySignalCondition.wait();
return t_edgeID;
}
Code: Alles auswählen
../
case TRAFFIC_LIGHTS_LOCATED:
mySignalCondition.trigger();
break;
../
Hat jemand eine Vermutung? Ich danke!
Gruß Lespaul