phi*_*reo 4 concurrency multithreading
从广义上讲,进程间和线程间通信如何工作?
澄清:我理解这个问题不能在一个简洁的段落中详尽地回答.我正在寻找能够为初学者提供良好起点的答案 - 关于它如何运作的高级概念.
从广义上讲,有两种基本机制.
最简单的是共享内存.这两个进程都可以访问一些可以用于读取或写入的内存,这样一个中的写入在另一个的读取中是可见的.
另一种机制是通道,它就像两个进程之间的管道.在这种情况下,一个进程将一些数据放入管道,另一个进程将其拉出.这种机制具有破坏性,一旦消耗,数据就会从管道中丢失,因此接收过程最好用它做一些事情.
虽然第一种情况听起来更简单,但在实践中它却带来了危险.如果两个进程同时尝试写入,谁知道会发生什么.为了避免这种情况,使用第三种类型的IPC机制,锁定,用于在可以对共享状态执行某些操作时从一个进程向另一个进程发送信号.
从理论的角度来看,它们都是等价的.大多数操作系统都提供所有这些机制.
但并发进程不必进行通信.在"无共享"模型中,单个主任务可以准备许多工作任务.工作任务执行计算而无需额外输入.当所有工人完成后,主任务可以产生结果.这很有吸引力,因为IPC具有性能成本(同步),并且没有任何共享可以完全避免同步.
| 归档时间: |
|
| 查看次数: |
7495 次 |
| 最近记录: |