我已經實施了一個工作/任務系統。您可以創建function<void, void>
並將其放置在線程本地隊列中,然後將函數包裝到光纖中。如何實現單個消息的消息傳遞?
現在,這件作品現在完全正常,但如果我不能返回值,它將是無用的。 function<T, void>
這意味着我需要一種方法來做消息傳遞。我這樣實現它:
我有一個Cell<T>
它可以存儲一個變量,並有一個原子計數器。我採取了一個function<T, void>
,包裝封閉。一旦函數執行完畢,它將寫入cell
並遞減計數器。現在,當我創建closure
時,我必須指向一個單元格,其中一個位於封閉內部,另一個位於外部。
關閉是function<void, void>
類型,我也把它包裝在一個光纖中,並把它放在一個線程本地隊列中。
現在在任務系統之外,我可以檢查該單元是否計數器已遞減爲0.如果已知,task
必須已完成,否則我必須等待。我只等待任務系統之外的主線程。在任務系統內部,我可以重新安排時間。
我之前沒有做過任何多線程編程,而這是我可以想象實現「消息傳遞」的唯一方法。
我很確定像我的Cell
這樣的東西已經被髮明,但我不知道它的通用名稱是什麼。
這是實現消息傳遞的常用方法嗎?我的意思是「封閉一個cell
並等待完成」。
我的Cell
的正確名稱是什麼?有沒有可用的在線實現?