我能夠刪除此警告,請在以下幾點建議。QSocketNotifier警告 - 在線程中使用套接字
QSocketNotifier: socket notifiers cannot be enabled from another thread
每當有新的請求來到QTcpServer我創建新的對象 - xxx
。此對象然後創建線程爲此套接字&發送接收數據在yyy對象的 dowork_socket()函數。在dowork_socket()函數內部,我發出信號signalTcpSocketWriteData()從套接字發送數據。
對象創建線程的新的socket - xxx
(我不是粘貼完整的代碼):----
yyy * ptr;
QTcpSocket *m_pTcpSocket;
public slots:
void writeDataSlot(QByteArray data)
{
m_pTcpSocket->write(data);
m_pTcpSocket->flush();
}
對象,其中線移動 - yyy
(我不是粘貼完整的代碼) :----
xxx *TcpSocketWrapper_ptr;
signals:
void signalTcpSocketWriteData(QByteArray);
public slots:
void dowork_socket();
內上述目的YYY構造器我連接信號signalTcpSocketWriteData到時隙writeDataSlot:---
connect(this, SIGNAL(signalTcpSocketWriteData(QByteArray)), TcpSocketWrapper_ptr, SLOT(writeDataSlot(QByteArray)), Qt::QueuedConnection);
對象YYY的DoWork的功能: -
void TcpSocketThreadObject::dowork_socket()
{
QByteArray block;
block.append(" \n hi again .. !!!");
emit signalTcpSocketWriteData(block);
}
我能夠通過上述方法&以上警告完全刪除數據發送成功。
1>
現在我的問題是假設創建了兩個線程&兩個線程都同時發出信號,那麼在運行插槽時會有衝突嗎?
2>
它會導致一些關鍵部分問題或排隊的事件&將不會同時執行?
請在這兩點上提出建議。
任何人誰可以建議在這個線程? – Katoch