【发布时间】:2016-02-23 15:31:53
【问题描述】:
我创建了一些这样的类:
class TcpClient: public QObject
{
public TcpClient(){}
QSocket *socket;
QMutex mutex;
void write()
{
QMutexLocker locker(&mutex);
socket->write();
}
}
class SubQthread :public QThread
{
public:
SubQthread(TcpClient *tcp)
{
//
m_tcp = tcp;
}
private:
TcpClient *m_tcp;
protected:
void run()
{
m_tcp->write();
}
}
class Widget:public QWidget
{
public:
Widget()
{
client = new TcpClient(this);
}
private:
TcpClient *client;
}
当我创建多个子 QThreads 时,我将指针 TcpClient* 传递给 QThread。这是一个好主意吗? 前提是我可以确保应用完成后 TcpClient* 会被删除。
【问题讨论】:
-
让多个线程通过同一个套接字进行通信通常是个坏主意,即使有锁定也是如此。你的用例是什么?为什么所有线程都需要使用同一个套接字? 每个线程不能有一个套接字和一个连接吗?
-
我认为这属于代码审查
标签: c++ multithreading qt