16.4.1 安全地处理状态

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

16.4.1 安全地处理状态

 

    在单线程应用程序中,就像我们刚才的实现绘制矩形,可以使用全局可变变量。从纯函数的观点来看,这可能不是最优雅的解决方案,但它是一种务实的选择,因为在 .NET 编程中,使用变量是很容易的。毫无疑问,写的代码可以使用 List<T> 类型的变量,来存储矩形本身,因此,我们来看一下另一种解决方案,一旦引入并行的概念,它就更加重要,从函数的观点来看,使代码更清晰。

    在本书中,我们不会在演示中介绍并行,但你可以从本书的网站上,获得示例的改进版本。在那个版本中,我们使应用程序在线,并允许多个用户连接到一台服务器上,共同绘制一个图像。在那种情况下,状态不仅可以由这个用户可以修改,而且,还可以由来自网络通信的消息并发修改。如果我们决定使用可变状态,就必须小心地使用锁,它会使代码复杂化。当我们使用在这一节中介绍的技术,来存储状态时,不必做单独的改变,我们写的代码,是完全线程安全(thread-safe)的,如今,这是相当重要的。

    我们将使用的技术称为消息传递(message passing)。在消息传递的应用程序中,进程可以彼此向对方发送消息,交换所有需要的状态,只需要通过发送或回复消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值