如何在C中实现自己的信号量?

时间:2014-02-27 05:01:30

标签: c function semaphore consumer producer

我正在通过不同的方法解决生产者/消费者问题。我目前正在研究的那个涉及我自己实现的信号量,与Peterson的解决方案相结合,以保护信号量的down()和up()函数调用。

问题是,我在C中工作,我能想到创建信号量的唯一方法是使用带有函数指针的结构用于down()和up()。这是正确的想法吗?

2 个答案:

答案 0 :(得分:2)

您可能希望使用某些操作系统提供的或硬件提供的同步原语。示例包括系统调用(例如Linux的futex调用,Windows'EnterCriticalSection),硬件交换调用(例如x86上的cmpxchg,ARM上的ldrex/strex)或使用的库函数其中一种方法(例如pthread_mutex)。

尝试在没有OS或硬件帮助的情况下进行同步可能非常困难。

答案 1 :(得分:0)

检查futex,它是一个用户空间同步原语。但我不认为你在寻找这么复杂的东西。