【发布时间】:2015-06-11 12:05:34
【问题描述】:
你能在并发程序中有以下场景吗?
假设一个线程获取一个锁来执行一个临界区。然后在临界区执行之前处理器抢占线程。执行的新线程需要来自旧线程(被抢占)的锁。所以当前线程无法继续(挂起直到它被抢占)。操作系统中是否有机制在释放锁之前不让线程抢占?
【问题讨论】:
-
在linux spinlock中,当一个进程试图获取spinlock时,它首先禁用抢占。这样就不会发生各种死锁。对于阻塞锁(互斥锁),请参阅 Danel 的回答。
标签: multithreading