[問題] THREAD裡的WHILE可以更新data嗎?

看板C_and_CPP (C/C++)作者 (活著是件難過的事)時間13年前 (2012/10/08 09:46), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC,LINUX,ECLIPSE 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) PTHEARD MSG_QUEUE 問題(Question): 我在試寫一個SOCKET的多人聊天室 我設計當一個CLIENT連接到SERVER時就產生 一個THREAD THREAD裡在用WHILE RECV跟SEND, 但是這情形就是當有一個新的 CLIENT連接上時 ACCEPT的SOCKET也跟著更新 請問這部份應該怎麼撰寫比較好 有試過MESSAGE QUEUE 但是還在嘗試中 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) int*newsock[5]; int main() { listen(sockfd,5); while(1){ int i=0; linksockfd[i]=accept(sockfd,.....); nn=*i; newsock[i]=linksockfd[i] pthread_create(&thread1,&recvthread,....); i++; } } void* recvthread(*nn){ while(1){ recv(nn,buffer,...) for(j=1~5) { send(newsock[j],buffer,...) } } } 這種感覺 忽略掉蠻多的 補充說明(Supplement): -- ████ * http://ppt.cc/M9C4 臉書 http://0rz.tw/tkNbW 噗浪 ███◣ █ █ . ☆█ ◥█ ,告訴你,我沒有朋友喔 ████ ███ ███◣ ███◣ █ █ █ █ █ 你要當我的朋友嗎? █── █ █ █ ◢█ * §hilulu01 ███◤*█ ███◤ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.153.62

10/08 11:52, , 1F
pthread_create最後一個參數可以放callback data
10/08 11:52, 1F

10/08 15:25, , 2F
那不是一開始就讀進去了 後來如果值有更新就不行了
10/08 15:25, 2F

10/08 15:28, , 3F
用指標啊,另外要注意critical section
10/08 15:28, 3F

10/08 16:31, , 4F
用全域+指標gg惹XD
10/08 16:31, 4F

10/08 16:32, , 5F
用array來儲存每一個連線吧?
10/08 16:32, 5F
※ 編輯: skizzy 來自: 61.222.153.62 (10/08 16:51)
文章代碼(AID): #1GSZ20AW (C_and_CPP)
文章代碼(AID): #1GSZ20AW (C_and_CPP)