亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
請(qǐng)問(wèn)如何在一個(gè)線程中向另一個(gè)線程安排任務(wù)?
[打印本頁(yè)]
作者:
xdiudiux
時(shí)間:
2016-04-21 15:46
標(biāo)題:
請(qǐng)問(wèn)如何在一個(gè)線程中向另一個(gè)線程安排任務(wù)?
有一個(gè)主線程和一個(gè)分線程,主線程有自己的任務(wù),不能阻塞。分線程在處理完一部分事情后要通知主線程執(zhí)行相應(yīng)的操作,請(qǐng)問(wèn)該如何實(shí)現(xiàn)呢?pthread和std::thread好像都不支持這樣子操作。
作者:
VIP_fuck
時(shí)間:
2016-04-21 15:49
用signal試試?
作者:
xdiudiux
時(shí)間:
2016-04-21 15:56
本帖最后由 xdiudiux 于 2016-04-21 15:58 編輯
回復(fù)
2#
VIP_fuck
我現(xiàn)在是暫時(shí)在用SIGALRM來(lái)實(shí)現(xiàn),但是我看有些介紹說(shuō)signal并不一定總是被主線程接收?而且signal實(shí)在有限,將來(lái)事件多了怕不夠用。。請(qǐng)問(wèn)還有更好的辦法嗎?
謝謝回答!
作者:
VIP_fuck
時(shí)間:
2016-04-21 16:01
回復(fù)
3#
xdiudiux
libevent 試試?別的我就不知道了。因?yàn)槟阏f(shuō)的是不能阻塞。那就得采用回調(diào)這種方式,或者類似。比較穩(wěn)妥的,就試試 libevent 吧。別的方法。。。就坐等大牛補(bǔ)充吧。
作者:
MeRcy_PM
時(shí)間:
2016-04-22 16:17
本帖最后由 MeRcy_PM 于 2016-04-22 16:18 編輯
類似squid的異步事件吧。隊(duì)列分發(fā)事件,事件完成以后通過(guò)pipe發(fā)個(gè)字符,主線程中通過(guò)IO多路復(fù)用監(jiān)聽(tīng)這些pipe的fd。
作者:
xdiudiux
時(shí)間:
2016-04-22 17:47
回復(fù)
4#
VIP_fuck
好像dispatch后還是會(huì)阻塞的?
看了下libevent覺(jué)得好難啊,我好菜。。
作者:
wlmqgzm
時(shí)間:
2016-04-24 13:00
最簡(jiǎn)單的笨辦法就是寫(xiě)文件(可以是內(nèi)存盤(pán)), 主進(jìn)程寫(xiě)文件, 指定1-N個(gè)文件名, open, write, close, rename 后綴為xxx, 表示已經(jīng)寫(xiě)完了.
從線程 讀指定xxx后綴的文件, open, read, close, remove.
作者:
wlmqgzm
時(shí)間:
2016-04-24 13:14
本帖最后由 wlmqgzm 于 2016-04-24 13:20 編輯
第2種方法:
我自己的代碼一般是用boost asio 中io_service做任務(wù)隊(duì)列, 多線程驅(qū)動(dòng)多個(gè)io_service, 然后, 想讓哪個(gè)線程run, 就指定那個(gè)io_server.post,
第3種就是
消息隊(duì)列, 做一個(gè)內(nèi)部的消息隊(duì)列, 消費(fèi)者/制造者, 標(biāo)準(zhǔn)流程, 也有無(wú)鎖的方案, 例如: boost就有無(wú)鎖隊(duì)列.
第4種方法:
就是 共享內(nèi)存, 一般都加鎖來(lái)解決, 還有無(wú)鎖的方案, 每家公司都有自己的一套辦法, 可以提供更高的性能.
第5種辦法:
file_mapping , 一般都是把它做類似共享內(nèi)存的東西來(lái)做, 代碼大同小異. 也有無(wú)鎖的方案, 一個(gè)讀一個(gè)寫(xiě), 我們公司是用順序流+同步碼隔離解決, 性能也非常高, 容量不受內(nèi)存空間限制.
作者:
yulihua49
時(shí)間:
2016-04-24 17:28
通過(guò)隊(duì)列,生產(chǎn)者-消費(fèi)者模型。
作者:
xdiudiux
時(shí)間:
2016-04-25 12:11
上周到現(xiàn)在還是沒(méi)搞好理想的方法。時(shí)間有限,先用signal實(shí)現(xiàn)了,有時(shí)間再搞。謝謝樓上各位!
作者:
3P用戶
時(shí)間:
2016-04-27 22:24
不明白,有什么事兒是非得主線程去做不可的呢?主線程有它的事兒就讓它忙它的唄,子線程忙活完了閑著也是閑著,就繼續(xù)做唄。
作者:
xdiudiux
時(shí)間:
2018-02-24 13:35
回復(fù)
11#
3P用戶
iOS開(kāi)發(fā),UIKit方法調(diào)用必須要在主線程才可以。
作者:
yshwuxian
時(shí)間:
2018-02-27 19:04
你的意思是,主線程需要不停的跑一個(gè)函數(shù),來(lái)了消息后產(chǎn)生中斷,去處理消息,處理完再回來(lái)?
作者:
ulver
時(shí)間:
2018-03-05 15:25
取決于你用什么并發(fā)處理模型啊,譬如就是普通的消息隊(duì)列分發(fā)機(jī)制,分線程只要將通知封裝到消息隊(duì)列里就好了,如果主線程用epoll或者什么,就采用相應(yīng)的處理。所以,關(guān)鍵在于你采用什么方式處理并發(fā)而已,有很多模型的。
作者:
ulver
時(shí)間:
2018-03-05 15:31
xdiudiux 發(fā)表于 2018-02-24 13:35
回復(fù) 11# 3P用戶
iOS開(kāi)發(fā),UIKit方法調(diào)用必須要在主線程才可以。
沒(méi)做過(guò)IOS開(kāi)發(fā),不過(guò)這類界面類的應(yīng)該都會(huì)有類似MFC的消息處理,或者QT的信號(hào)/槽機(jī)制的東西的,應(yīng)該是很簡(jiǎn)單的
歡迎光臨 Chinaunix (http://72891.cn/)
Powered by Discuz! X3.2