一、先逐条回答
1️⃣ 死锁一般发生在「一个进程包含多个线程」吗?
是最常见场景,但不是必要条件。
多线程 + 多互斥锁 →高发
单进程单线程 →不可能
多进程 →也可能(如果锁跨进程)
2️⃣ 多线程 + 不同互斥锁访问共享资源,会导致死锁吗?
可能,但不是必然。
关键不是“不同互斥锁”,而是是否满足死锁四要素。
3️⃣ 不同进程、不同线程、不同互斥锁,也会死锁吗?
会,但前提是:
使用的是跨进程同步原语
pthread_mutexattr_setpshared(PTHREAD_PROCESS_SHARED)System V semaphore
POSIX semaphore
普通pthread_mutex(进程私有)不会跨进程死锁。