我正在通过不同的方法解决生产者/消费者问题。我目前正在研究的那个涉及我自己实现的信号量,与Peterson的解决方案相结合,以保护信号量的down()和up()函数调用。
问题是,我在C中工作,我能想到创建信号量的唯一方法是使用带有函数指针的结构用于down()和up()。这是正确的想法吗?
答案 0 :(得分:2)
您可能希望使用某些操作系统提供的或硬件提供的同步原语。示例包括系统调用(例如Linux的futex
调用,Windows'EnterCriticalSection
),硬件交换调用(例如x86上的cmpxchg
,ARM上的ldrex/strex
)或使用的库函数其中一种方法(例如pthread_mutex
)。
尝试在没有OS或硬件帮助的情况下进行同步可能非常困难。
答案 1 :(得分:0)
检查futex,它是一个用户空间同步原语。但我不认为你在寻找这么复杂的东西。