这是一个面试问题。
在Linux/UNIX上的多处理情况下是否可以使用互斥锁?
我的想法:
不,不同的进程具有单独的内存空间。
互斥锁仅用于多线程。
信号量用于多处理以进行同步。
正确的 ?
欢迎任何意见。
谢谢
最佳答案
互斥锁(mutex)防止多个线程
从同时执行代码的关键部分
访问共享数据(即互斥锁用于序列化)
线程的执行)。所有互斥锁必须是全局的。一种
通过mutex_lock()成功调用互斥锁
会导致另一个试图锁定该线程的线程
阻塞相同的互斥锁,直到所有者线程通过以下方式将其解锁
的mutex_unlock()。同一进程中的线程或
在其他进程中可以共享互斥体。
互斥对象可以同步同一进程内的线程或
在中,其他进程在中。互斥体可用于同步
进程之间的线程(如果互斥锁分配在其中)
可写内存,并在合作进程之间共享
(请参阅mmap(2)),并且已针对此任务进行了初始化。
初始化
互斥体可以是进程内的,也可以是进程间的,具体取决于
在将参数隐式或显式传递给
该互斥量的初始化。静态分配的互斥锁
不需要显式初始化;默认情况下,
静态分配的互斥锁将全零初始化
并将其范围设置为在调用过程中。
为了实现进程间同步,互斥体必须是
处理这些进程之间共享的内存。自从
此类互斥锁的内存必须动态分配,
互斥锁需要使用Mutex_init()进行显式初始化。
关于multithreading - 在Linux/UNIX上的多处理情况下是否可以使用互斥锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389730/