是否有用于不同进程的线程之间通信的保护机制?



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

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

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

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

相关内容

  • 没有找到相关文章

最新更新