16.4.1 安全地处理状态
在单线程应用程序中,就像我们刚才的实现绘制矩形,可以使用全局可变变量。从纯函数的观点来看,这可能不是最优雅的解决方案,但它是一种务实的选择,因为在 .NET 编程中,使用变量是很容易的。毫无疑问,写的代码可以使用 List<T> 类型的变量,来存储矩形本身,因此,我们来看一下另一种解决方案,一旦引入并行的概念,它就更加重要,从函数的观点来看,使代码更清晰。
在本书中,我们不会在演示中介绍并行,但你可以从本书的网站上,获得示例的改进版本。在那个版本中,我们使应用程序在线,并允许多个用户连接到一台服务器上,共同绘制一个图像。在那种情况下,状态不仅可以由这个用户可以修改,而且,还可以由来自网络通信的消息并发修改。如果我们决定使用可变状态,就必须小心地使用锁,它会使代码复杂化。当我们使用在这一节中介绍的技术,来存储状态时,不必做单独的改变,我们写的代码,是完全线程安全(thread-safe)的,如今,这是相当重要的。
我们将使用的技术称为消息传递(message passing)。在消息传递的应用程序中,进程可以彼此向对方发送消息,交换所有需要的状态,只需要通过发送或回复消息。

本文探讨了在单线程及并行环境下处理状态的方法,介绍了消息传递技术及其优势,尤其是在实现线程安全方面。
990

被折叠的 条评论
为什么被折叠?



