74 lines
1.7 KiB
C++
74 lines
1.7 KiB
C++
|
|
|
|
#ifndef TTHREADP_H
|
|
#define TTHREADP_H
|
|
|
|
#include <QObject>
|
|
|
|
#include "tthreadmessage.h"
|
|
|
|
//=====================================================================
|
|
|
|
//======================================
|
|
// TThreadMessageDispatcher class
|
|
//--------------------------------------
|
|
|
|
//NOTE: This class should eventually be moved to tthreadmessagep.h...
|
|
class TThreadMessageDispatcher : public QObject //singleton
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
TThreadMessageDispatcher();
|
|
Q_SIGNALS : void signaled(TThread::Message *msg);
|
|
void blockingSignaled(TThread::Message *msg);
|
|
protected Q_SLOTS:
|
|
void onSignal(TThread::Message *msg);
|
|
|
|
public:
|
|
void emitSignaled(TThread::Message *msg);
|
|
void emitBlockingSignaled(TThread::Message *msg);
|
|
static void init();
|
|
static TThreadMessageDispatcher *instance();
|
|
};
|
|
|
|
//=====================================================================
|
|
|
|
namespace TThread
|
|
{
|
|
//Forward declarations
|
|
class ExecutorId;
|
|
class ExecutorImpSlots;
|
|
}
|
|
|
|
//=====================================================================
|
|
|
|
//==============================
|
|
// ExecutorImpSlots class
|
|
//------------------------------
|
|
|
|
class TThread::ExecutorImpSlots : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
ExecutorImpSlots();
|
|
~ExecutorImpSlots();
|
|
|
|
//The following is provided to ensure that point #3 in Qt reference in page "Thread support in Qt"
|
|
//is satisfied:
|
|
|
|
// "You must ensure that all objects created in
|
|
// a thread are deleted before you delete the QThread."
|
|
|
|
//So, specifically, thread creation should happen only in the main thread, not in worker threads.
|
|
void emitRefreshAssignments();
|
|
|
|
Q_SIGNALS : void refreshAssignments();
|
|
|
|
public Q_SLOTS:
|
|
void onTerminated();
|
|
void onRefreshAssignments();
|
|
};
|
|
|
|
#endif
|