[問題] 請教一個thread的問題

看板LinuxDev作者 (\冏/)時間17年前 (2006/11/13 01:58), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
小弟斗膽,請大家幫我看一下,我的thread哪邊用錯了 這是一個socket 程式, 其中 receive() 是用thread 來跑 此程式為client 端,他要接收來自server 端的文字訊息 而且也能發送文字訊息給 server int fd; //global variable void* receive(void* id) //讓thread一直檢查,資料是否能從 server 讀取 { char rcvbuf[1024]; //如果有資料從server來,那就print出來 int i; while(1) { bzero(rcvbuf,sizeof(rcvbuf)); if( (i=read(fd,rcvbuf,sizeof(rcvbuf))) >0) printf ("msg from [server]:%s",rcvbuf); } pthread_exit(NULL); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 以下這一段 是main() 中,關於thread的部份 pthread_t threads[2]; connect(fd,(struct sockaddr*)&addr,sizeof(addr)) printf ("\n,the message from server:%s\n",msg); pthread_create(&threads[0], NULL, receive, (void *)1); while(1) // 此段是用來 input 文字訊息給 server 的 { bzero(sndbuf,sizeof(sndbuf)); printf ("input msg to server:"); fgets (sndbuf,sizeof(sndbuf),stdin); write (fd,sndbuf,sizeof(sndbuf)); } 我想問一下,我的thread這樣寫,有問題嗎 因為我發現,我的receive() 不太會跑 (照常理應該是一直在run) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.143.66

11/13 09:51, , 1F
呼叫pthread_join,讓他們兩個同步看看?
11/13 09:51, 1F

11/13 18:10, , 2F
就您 po 出來的地方 似乎沒有大問題 至多檢查一下回傳值
11/13 18:10, 2F

11/13 18:10, , 3F
您說您的 client 不太會跑, 因為 read(2)預設是 blocking
11/13 18:10, 3F

11/13 18:12, , 4F
mode, 而且並未從 socket 中讀到東西,他就不會跑囉...
11/13 18:12, 4F
文章代碼(AID): #15Ls2jSH (LinuxDev)