线程通信与进程通信

时间:2012-03-30 07:52:58

标签: multithreading process communication

任何人都可以解释线程通信和进程通信之间的区别,并举几个例子说明每种类型的通信吗?

3 个答案:

答案 0 :(得分:4)

线程共享相同的内存。因此,与流程通信相比,通信速度更快。进程使用共享内存,管道和消息队列来进行通信。

答案 1 :(得分:3)

线程通信可以像共享变量或对象一样简单,同时要求同步。进程间通信有点困难,速度要慢得多,因为进程是分离的,无法干预。对于这种类型的通信,您可以使用命名管道,内存映射文件,msmq,TCP,WCF,文件系统等。

答案 2 :(得分:0)

一个进程中只有一个堆,一个进程中的所有线程共享该堆。因此,在进程的线程内进行通信时,同步是关键。可以在线程中进行通信的方式是:

  • 共享内存:创建共享内存缓冲池,您可以使用 Unix 域套接字发送有关何时读取/写入数据的即时消息/通知。(仅一个用例)
  • 带有互斥体的条件变量(我喜欢这种方法作为 c++ 程序员)

但是,由于进程有自己的边界,所以通信的方式通常是:

  • 套接字、文件、管道和消息队列。
  • 共享内存:这是不同的,因为此内存未分配 在进程边界内,与线程不同。