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

问题描述 投票:0回答:1

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

linux multithreading process operating-system
1个回答
0
投票
来自不同进程的线程通常被视为独立进程本身,因为它们彼此之间不共享状态并且在单独的内存空间中操作。

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

由于不可能在进程之间偶然突变其他线程的数据,因此有时内核会自动处理同步,例如使用管道,但是可能需要跨进程进行协调。文件锁定(例如与fcntl(2)flock(2)一起使用)可以防止合作进程破坏文件;信号量可以防止争用或限制共享资源的并发;甚至可以为某些共享内存案例共享一个互斥锁。您使用的工具取决于您在各个流程之间共享的资源。

© www.soinside.com 2019 - 2024. All rights reserved.