看了4.4.2 使用消息传递的同步操作,有些感触。

CSP的概念

CSP 基本概念:

没有共享数据,每个线程就可以进行独立思考,其行为纯粹基于其所接收到的信息。每个线程就都有一个状态机:当线程收到一条信息,它将会以某种方式更新其状态,并且可能向其他线程发出一条或多条信息,对于消息的处理依赖于线程的初始化状态。

特别像我最近做的 AOA/IOS,连接时,从 udev callback 里发送消息状态给 device_status_loop 来处理的set_accessary_status的函数,loop 函数维护了一个状态机,不同状态下的处理当然是不同的。而后可以由这个出状态机转移新的状态出去。

这里无需考虑同步和并发问题,只需要考虑什么时候接收信息和发送信息,这种程序设计的方式被称为参与者模式(Actor model)

typedef enum {
	NoneDevice,
	OriginAndroidAttached,
	OriginAndroidDetached,
	AoaAndroidAttached,
	AoaAndroidDetached,
	OriginIosAttached,
	IosAttached,
	IosDetached,
} _status;