16.5 消息并发传递
来源:互联网 发布:linux less和more 编辑:程序博客网 时间:2024/05/19 20:48
16.5 消息并发传递
当我们在第 14 章中讨论开发并发程序时,关注的技术是避免使用可变状态。没有可变状态,就可以并行地运行一个计算的几个部分,因为它们不会彼此干扰。这在许多能够以函数方式实现的数据处理问题时,工作地非常好,但在处理需要更频繁地交换信息时,也有问题。
最广为人知的解决方案是,使用共享内存(shared memory)和通过锁定保护访问共享的状态。用这种技术的问题在于,正确使用锁定是相当困难的。必须确保所有的共享内存都是正确锁定(以避免争用条件(race conditions),当多个线程写入相同的位置时)。另一个困难是,当获得锁时,不小心就可能引起死锁(deadlock),两个线程永远被阻塞,每个进程都等待对方完成。
在 F# 中,MailboxProcessor<'Msg> 类型可用于实现并行编程,使用一种被称为消息传递并发性(message passing concurrency)的技术。这种方法并未广泛应用,但在一种函数式语言 Erlang [Armstrong et al., 1996] 中,是并发性的基础,以其可扩展性而闻名。当我们在绘制矩形的应用程序中,把状态保存到邮箱时,已经看到过这种方法,但那种情况是为了探索异步逻辑和事件处理而设计的,并不是真实的并发性。
在这一节中,我们将看使用多个线程中的邮箱处理器,来演示这种做法。我们将使用的示例,有一个邮箱处理器和多个访问它的异步工作流(运行在多个线程上)。使用消息传递并发性更复杂的程序,经常使用多个彼此通信的邮箱处理器。
- 16.5 消息并发传递
- Erlang并发机制 – 消息传递
- 多进程并发编程--消息传递服务器
- Erlang并发机制 – 消息传递
- Erlang并发编程之消息传递
- 互斥与并发(4)—消息传递
- 消息传递
- 消息传递
- 消息传递
- 消息传递
- 消息传递
- 消息传递
- 57. 消息传递让并发系统有更好的可扩展性
- scala并发编程原生线程Actor、Case Class下的消息传递和偏函数实战
- MFC消息详解 消息传递
- 运用JMS传递消息
- 基本概念:消息传递
- EXE之间传递消息
- Mac配置Android开发环境变量及工具安装图(2)
- MyEclipse 8.6 link安装aptana2 插件 svn插件 android开发环境
- google map投影方式 .
- c# 通讯死锁问题 线程同步问题
- hibernate大致的源代码包功能分析:
- 16.5 消息并发传递
- Mac配置Android开发环境变量及工具安装图(3)
- Android 上 NFC 应用
- FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解
- 安装VMware+Windgb+Win7WinXP内核驱动调试的笔记
- 【郭林专刊】:需求把握和正确决策
- 链接器和装入器的基本工作原理
- Mac配置Android开发环境变量及工具安装图(4)
- Mac配置Android开发环境变量及工具安装图(5)