自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt中采用多線程實(shí)現(xiàn)Socket編程

移動(dòng)開發(fā)
Socket通常也稱作"套接字",應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。本文將有介紹,請(qǐng)看內(nèi)容。

本文介紹的是Qt中采用多線程Socket編程,由于工作的需要,開始接觸Qtsocket編程。Qt里的example是個(gè)不錯(cuò)的教程,但是當(dāng)我把代碼移植到多線程的環(huán)境時(shí)就出問題了:

  1. QObject: Cannot create children for a parent that is in a different thread. 

由于想要在線程中保留一個(gè)socket,以便維持雙邊通信,因此定義如下:

  1. SocketThread:public QThread  
  2.     {  
  3.             ....  
  4.             private:  
  5.                   QTcpSocket _tcpSocket;  
  6.      } 

但是這段代碼并無法正常的完成工作,后來在網(wǎng)上搜了一下資料,找到以下解釋(忘了出處了,以下是中文的大概意思):“ 在QThread中定義的所有東西都屬于創(chuàng)建該QThread的線程。“

問題出來了,如果按照這個(gè)定義,在SocketThread中定義的_tcpSocket,其實(shí)是屬于mainThread(SocketThread是在main函數(shù)中創(chuàng)建),而當(dāng)我們?cè)赟ocketThread中的run函數(shù)使用到_tcpSocket的時(shí)候,其實(shí)是跨線程調(diào)用,這樣就會(huì)出現(xiàn)上面的異常。

解決方法: 需要對(duì)SocketThread的定義做一下更改:

  1. SocketThread:public QThread  
  2.     {  
  3.             ....  
  4.             private:  
  5.                   QTcpSocket* _tcpSocket;  
  6.      } 

在上面我們并沒有創(chuàng)建具體的對(duì)象,而是定義了一個(gè)指針,而如何讓指針內(nèi)的內(nèi)容從屬于SocketThread這個(gè)線程呢?答案就是要在SocketThread的run方法中初始化:

  1. SocketThread::run()  
  2.     ... ;  
  3.      _tcpSocket = new QTcpSocket();  

進(jìn)行以上修改之后上面的異常就不再出現(xiàn)了。

小結(jié):Qt中采用多線程Socket編程的內(nèi)容介紹完了,在編程過程中我們也不免接觸多線程,相信也有一定的了解,最后希望本文對(duì)你有所了解?。。?/p>

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-13 10:03:19

Qt 多線程 編程

2011-06-13 16:51:19

Qt Socket

2011-06-16 10:38:13

Qt多線程編程

2011-06-30 17:31:32

Qt 多線程 信號(hào)

2011-06-22 16:18:23

QT 多線程 QSocket

2013-07-16 10:12:14

iOS多線程多線程概念多線程入門

2011-06-24 11:12:39

Qt 多線程 線程

2023-06-13 13:39:00

多線程異步編程

2011-06-24 11:03:31

Qt 多線程 線程

2009-03-12 10:52:43

Java線程多線程

2023-05-12 14:14:00

Java線程中斷

2011-06-22 10:12:08

Qt 線程

2024-06-11 00:00:30

C#編程線程

2024-10-21 16:59:37

C#編程多線程

2011-06-14 09:46:11

Qt QThread 線程

2011-06-30 18:03:58

QT 多線程 服務(wù)器

2010-03-03 16:19:29

Python Sock

2023-04-02 17:53:10

多線程編程自測(cè)

2023-06-05 07:56:10

線程分配處理器

2023-06-06 08:17:52

多線程編程Thread類
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)