线程从业务角度出发一般分为两种类型,一种是工作线程,一种是协调线程。

工作线程只负责处理计算工作。
协调线程负责协调各个工作线程的调度顺序。

工作线程如果需要处理共享的数据怎么办?线程间通讯有两种方式,一种是共享变量,另一种是消息处理。
我比较喜欢的处理方式是消息处理,即在每个工作线程的数据结构中设计出一个通讯邮箱,这样工作线程之间的通讯可以通过往相应的线程邮箱中发消息,消息的协议格式可以自己设计。

对于协调线程,使用epoll的方式做一个事件处理轴,每个线程可以注意在这个事件轴上注册自己的fd管道,这样每个工作线程就可以通过fd管道的方式去通知协调线程去工作,协调线程会根绝fd的事件,把相应的消息发到对应线程的通讯邮箱里。

这样就可以做一个主机内部的服务通讯模型。

感觉有点像Erlang:)


LuCoder
10 声望1 粉丝

技术宅男


« 上一篇
线程Thread
下一篇 »
线程同步规则