亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 7152 | 回復(fù): 7
打印 上一主題 下一主題

多線程同時(shí)調(diào)用send函數(shù)的疑惑 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-11-02 09:28 |只看該作者 |倒序?yàn)g覽
在arm-linux下編寫的一個(gè)多線程應(yīng)用程序,此程序作為tcp client,需要連接到一個(gè)WIN TCP SERVER上,并與之進(jìn)行tcp數(shù)據(jù)
通訊,現(xiàn)在的疑問tcp send函數(shù)被我封裝成一個(gè)專用的發(fā)送接口函數(shù)供其他函數(shù)調(diào)用,這個(gè)函數(shù)可能同時(shí)被多個(gè)線程中的函數(shù)進(jìn)行
調(diào)用,這樣是否會有問題,是否需要在send函數(shù)那里加線程互斥鎖呢?

thanks in advance

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-11-02 11:41 |只看該作者

回復(fù) #1 qks5201314 的帖子

應(yīng)該沒有問題,只要這個(gè)函數(shù)是可重入的就沒有問題。send系統(tǒng)調(diào)用本身是線程安全的。

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
3 [報(bào)告]
發(fā)表于 2008-11-02 15:18 |只看該作者

回復(fù) #1 qks5201314 的帖子

理論上可以,實(shí)踐中基本沒有可操作性。雖然send線程安全并且可重入,但多種情況都會導(dǎo)致各線程的消息片段交叉起來:
1,信號中斷
2,阻塞IO時(shí),線程A寫入部分?jǐn)?shù)據(jù)阻塞,緩存可寫時(shí)不一定仍調(diào)度線程A,可能是其它線程
3,非阻塞IO時(shí),線程A可能寫入部分?jǐn)?shù)據(jù)返回,然后可能調(diào)度其它線程繼續(xù)寫入
可行的方案是一個(gè)線程處理多個(gè)network IO或者一個(gè)線程處理一個(gè)network IO;緵]有多個(gè)線程處理一個(gè)network IO,不僅需要加鎖保持消息的完整性(注:不是線程安全意義上的加鎖,而是程序邏輯的完整性),而且會極大降低線程并發(fā)性能

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2008-11-02 19:56 |只看該作者
我現(xiàn)在用的是tcp阻塞發(fā)送數(shù)據(jù),如果按照樓上的說法,我是現(xiàn)在有多個(gè)線程需要進(jìn)行TCP發(fā)送數(shù)據(jù),應(yīng)該具體如何操作比較安全呢?謝謝

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
5 [報(bào)告]
發(fā)表于 2008-11-02 21:01 |只看該作者

回復(fù) #4 qks5201314 的帖子

1,每個(gè)線程一個(gè)連接與服務(wù)端通信

2,多個(gè)線程把數(shù)據(jù)put到隊(duì)列中,由另一個(gè)線程負(fù)責(zé)發(fā)送

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2008-11-03 09:51 |只看該作者

回復(fù) #5 timespace 的帖子

恩,感覺第二種方法容易實(shí)現(xiàn)些,第一種方法不知道該如何操作的?

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
7 [報(bào)告]
發(fā)表于 2008-11-03 14:50 |只看該作者

回復(fù) #6 qks5201314 的帖子

第一種方法有前提:Server要支持多個(gè)連接
每個(gè)線程一個(gè)連接其實(shí)比第二種方法簡單。不過最好還是處理IO的線程獨(dú)立出來

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2008-11-03 17:37 |只看該作者

回復(fù) #7 timespace 的帖子

我現(xiàn)在在用第二種方法測試了,謝謝
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP