【发布时间】:2014-05-28 10:09:36
【问题描述】:
对于我的一个朋友,我们不同意如何在用户空间级别(在 pthread 库中)处理同步。
一个。我认为在 pthread_mutex_lock 期间,线程会主动等待。意思是 linux 调度器启动这个线程,让它执行他的代码,它应该看起来像:
while (mutex_resource->locked);
然后,调度另一个线程,它可能释放locked 字段等。
所以这意味着调度程序在切换到下一个线程之前等待线程完成其调度时间,无论线程在做什么。
b.我的朋友认为等待线程以某种方式告诉内核“嘿,我睡着了,根本不要等我”。 在这种情况下,内核会立即调度下一个线程,而无需等待当前线程完成其调度时间,并知道该线程正在休眠。
从我在 pthread 的代码中看到的,似乎有循环处理锁。但也许我错过了什么。
在嵌入式系统中,防止内核等待是有意义的。所以他可能是对的(但我希望他不是:D)。
谢谢!
【问题讨论】:
标签: linux pthreads mutex scheduling