请问Qt中使用WinThread通常如何实现线程间通信如传递QByteArray

因为多线程要写在一个类里,并且考虑效率。需要使用WinThread。初学Qt,恳请各位前辈赐教。最好有代码,万分感谢!

在Qt里面是QThread吧,如果是多线程要在一个类里面也没啥问题,效率那主要就是考虑你线程干什么工作了,在Qt里面,你可以直接继承QThread类并实现它的run方法就可以了
class Worker_1 : public QThread
{
public:
Worker_1();

~Worker_1();

protected:
virtual void run() { // do somthing }

}
class Work_2 //你同样可以写出Work_2这个类
class WorkManager : QObject
{
Q_OBJECT

//......

public:

void start()

{
w1.start();

w2.start();

}

private:

Worker_1 w1;

Worker_2 w2;

}

// test main function
int main(void)
{
WorkManager wm;
wm.start();
while(1) QThread::sleep(300000);
}

在Qt里面QMutex、QSemphore只可以用来做线程间同步,如果你涉及到多线程共享资源的访问的话
两个线程间传递QByteArray,如果这个QbyteArray非常大的话,你建议你使用共享内存的方式,当然如果情况还好,可以使用Qt的信号与槽机制
温馨提示:答案为网友推荐,仅供参考
相似回答