我已经实施了一个工作/任务系统。您可以创建function<void, void>
并将其放置在线程本地队列中,然后将函数包装到光纤中。如何实现单个消息的消息传递?
现在,这件作品现在完全正常,但如果我不能返回值,它将是无用的。 function<T, void>
这意味着我需要一种方法来做消息传递。我这样实现它:
我有一个Cell<T>
它可以存储一个变量,并有一个原子计数器。我采取了一个function<T, void>
,包装封闭。一旦函数执行完毕,它将写入cell
并递减计数器。现在,当我创建closure
时,我必须指向一个单元格,其中一个位于封闭内部,另一个位于外部。
关闭是function<void, void>
类型,我也把它包装在一个光纤中,并把它放在一个线程本地队列中。
现在在任务系统之外,我可以检查该单元是否计数器已递减为0.如果已知,task
必须已完成,否则我必须等待。我只等待任务系统之外的主线程。在任务系统内部,我可以重新安排时间。
我之前没有做过任何多线程编程,而这是我可以想象实现“消息传递”的唯一方法。
我很确定像我的Cell
这样的东西已经被发明,但我不知道它的通用名称是什么。
这是实现消息传递的常用方法吗?我的意思是“封闭一个cell
并等待完成”。
我的Cell
的正确名称是什么?有没有可用的在线实现?