2013-04-18 43 views
1

在C编程语言中,为什么我们需要一个特殊的sem_t类型来定义信号量?难道不是一个整数吗?sem_t是如何定义的?函数sem_post和sem_wait是如何实现的?编辑:像GNU C库的示例实现将是伟大的。sem_t的结构和信号量的实现

+3

'sem_t'类型是故意不确定的,因为它取决于具体实现如何实现它。如果你想了解_one_实现,你可以将源代码下载到[GNU C库](http://www.gnu.org/software/libc/)并自己阅读源代码。 –

回答

2

信号量是操作系统内核管理的对象,所以sem_t将是操作系统特有的,因为它们也必须调用OS内核。

通常,信号量由任何等待线程的单元计数和队列来实现。

+0

是不是在用户空间中实现的Linux中的信号量(即一个具有sem_wait,sem_post ...)? – PaulDaviesC