这个问题拔高一个层次看,是一个设计模式问题;
你说的线程之间加锁来回调用,是典型的同步设计方法,优点是业务逻辑容易理解,新手易上手;
缺点是它把执行环境和业务逻辑绑定了,一个线程就等固定的事件、干固定的活。
消息队列方式,是异步的,特别容易支持订阅发布这种模式;缺点是系统大了不那么容易理解、上手。
如果整个系统都是单向发布消息还好,如某些消息是双向的、还需要接受者发结果回来,那这结果可以走一条消息回来,也可以是在参数消息里加一个callback,通过callback处理结果。
这样的系统一旦复杂了,调查问题只能通过看日志去理解它的整个运作过程。
用同步或异步的设计方法,最大的障碍是团队内部成员是否都理解、接受这种变革或重构。
【 在 AudiDoggie 的大作中提到: 】
: 进程内消息队列(消息循环)我一般把它分两种:
: - IO类,主循环是epoll/select,处理IO事件。典型的例子是Glib的mainloop
: - 自定义消息类,主循环处理自定义消息,一般在等待一个condition variable;以上层逻辑为主。典型的例子是WinMain、安卓应用的主线程的HanlerLooper
: ...................
--
FROM 111.198.228.*