【问题标题】:Are there protection mechanisms for communication between threads from different processes?不同进程的线程之间的通信是否有保护机制?
【发布时间】:2020-05-29 23:02:01
【问题描述】:

鉴于(同一进程的)线程在共享内存空间中运行,并且同步对进程内共享数据的访问变得前所未有的重要,这如何适用于来自不同进程的线程? 他们有哪些交流方式?

【问题讨论】:

    标签: linux multithreading process operating-system


    【解决方案1】:

    来自不同进程的线程通常被视为独立进程本身,因为它们彼此不共享状态并且在不同的内存空间中运行。

    因此,它们使用标准的进程间通信机制,例如 Unix 套接字、管道和其他文件描述符; SysV 或 POSIX IPC 机制,例如共享内存和信号量;锁定;和信号。在一个专门用于与其他进程交互的进程中拥有一个线程可能会很方便,但是 IPC 也可以在单线程进程中完成,或者在没有专用 IPC 线程的多线程进程中完成。

    由于不可能跨进程意外改变其他线程的数据的风​​险,因此有时同步由内核自动处理,例如使用管道,但可能需要跨进程进行协调。文件锁,例如fcntl(2)flock(2),可以防止合作进程损坏文件;信号量可以防止共享资源的争用或限制并发;甚至可以为某些共享内存情况共享互斥锁。您使用的工具取决于您跨进程共享的资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      相关资源
      最近更新 更多