あるデバイスを抽象化したクラスがあります。
class Device
{
public:
...
void Start();
void Stop();
void MsgLoop();
signals:
void sMsgArrived();
}
Start()とStop()はGUIスレッドから呼び出されます。Start()は、MsgLoop()を実行する新しいスレッドを開始します。次のようになります。
void MsgLoop()
{
forever {
if(SUCCESS == ReadMsg()) //synchronous, non-blocking
{
ProcessMsg(); //quite fast
emit sMsgArrived(); //this signal is connected with a slot in GUI thread
}
}
}
Stop()が呼び出されると、プログラムはMsgLoop()から戻り、スレッドを停止する必要があります。サブクラス化せずにQThreadでこれを実装するにはどうすればよいですか?