Archive for the ‘thread’ tag
多线程安全
多线程的开发与调试总是很困难的。因为他的不确定性,比如你的一个变量,在线程A的函数中可以使用,也可以同时在线程B的函数中被修改,由于两者的调用时机完全无法确定,因此增加了多线程的程序的维护与开发的难度。
大嘴牛采用了 active object 与 message passing 两种方式相结合的方式来从某种程度上缓解多线程编写的难度。
对于需要修改的类,可以封装成一个单独的线程,所有对于类下面数据的修改都通过消息方式进行传递,因此,其他线程想要进行修改,必须发送消息来进行。
问题还是存在的。比如你的读数据。如果你可以忍受读出脏的数据,那么没问题,这种模式比较合适你。否则还是乖乖的使用锁进行数据保护吧。
基于事件和基于线程的编程模型
如果不需要考虑多个连接的问题,而且一个连接所做的处理是计算密集型,那么每一个连接对应一个线程是最好的方式。但是如果有许多连接,并且每个连接的时候很短,而且都是非阻塞的处理,那么基于事件方式的处理就会具有更好的扩展性。
[1]. Threads with Events