0

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

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

4

2 回答 2

2

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

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

于 2014-02-27T05:51:13.297 回答
0

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

于 2014-02-27T05:44:40.760 回答