【问题标题】:thread communication vs process communication线程通信 vs 进程通信
【发布时间】:2012-03-30 07:52:58
【问题描述】:

谁能解释线程通信和进程通信之间的区别,并给出每种通信类型的几个例子?

【问题讨论】:

  • 亲爱的 Arjun,不,这不是作业问题。是的,我搜索了我的“最喜欢的”搜索引擎。经过搜索,我没有找到任何让我满意的答案。下次如果你没有什么聪明的回答,请试着弯曲你的热情,什么都不要回答。
  • @OP:我很抱歉你选择冒犯和粗鲁。您的问题没有显示(并且仍然显示)您尝试了什么以及您没有得到/理解的部分。通常,在 SO 上,人们希望 OP 在提出问题之前付出一些努力。如果您再次阅读您的问题,您可能会注意到您的问题并没有解决。我只是想通过指出这一点来提供帮助这样你就可以改进你的问题(并且至少有 3 人同意我的观点)。
  • 关于所以最好尽可能简单地提出问题,不要试图使问题复杂化,以便其他人更容易回答。我可以开始详细说明我在网上搜索过的内容并讲述我所学到的东西,但为什么要复杂化呢?你想让我在问题中说我搜索过的地方以及我花了多少时间,这样你就会确信我一开始就没有来到操作系统?你的反应是冒犯和傲慢的。我以我所知道的最简单的方式提出了这个问题。
  • 我只是想知道两者之间的确切区别。此外,我相信这类问题的答案将在以后对其他想要了解差异的人有所帮助,并且所有内容都将写在一个地方,而不是在没有得到确切答案的情况下分散在整个网络上。跨度>
  • 好的。祝你好运。希望您能得到满意的答复。

标签: multithreading process communication


【解决方案1】:

考虑到需要同步,线程通信可以像共享变量或对象一样简单。进程间通信有点困难和慢得多,因为进程是分开的并且不能干预。对于这种类型的通信,您可以使用命名管道、内存映射文件、msmq、TCP、WCF、文件系统等。

【讨论】:

    【解决方案2】:

    线程共享相同的内存。因此与进程通信相比,通信要快得多。进程使用共享内存、管道和消息队列进行通信。

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-15
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 2013-11-07
        • 2013-02-15
        • 2013-01-05
        相关资源
        最近更新 更多