...用于多線程網(wǎng)絡(luò)服務(wù)器。我想在多個(gè)線程之間傳遞數(shù)據(jù)。目前,我正在使用套接字,主線程阻塞在select()上,而工作線程阻塞在recv()上,盡管我覺(jué)得可能有更高級(jí)或預(yù)包裝的方式來(lái)處理C ++中的此任務(wù)。
3 回答

森林海
TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
我會(huì)讓工作線程在線程池中等待。
然后主機(jī)等待選擇(用于讀取和寫入)。
隨著數(shù)據(jù)的到來(lái),主服務(wù)器將作業(yè)添加到線程池中。添加每個(gè)作業(yè)后,線程將喚醒以執(zhí)行該作業(yè)并返回到池中。這樣,您就不會(huì)使用recv()阻止線程在特定端口上等待,并且固定的子線程集可以處理所有傳入流量。
在現(xiàn)成的對(duì)象中支持此功能的Currentl庫(kù):
ACE:http://www.cs.wustl.edu/~schmidt/ACE.html
Poco:http://pocoproject.org/

繁華開(kāi)滿天機(jī)
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以嘗試ACE庫(kù),該庫(kù)附帶了特別適合線程間通信的管道和消息隊(duì)列。
** ACE代表自適應(yīng)通信環(huán)境*
- 3 回答
- 0 關(guān)注
- 201 瀏覽
添加回答
舉報(bào)
0/150
提交
取消