在 C 中正确分配信号量的位置

Where correctly allocate semaphores in C

我正在尝试用 C 解决 "producer-consumer" 练习。

我有创建两个线程(一个生产者和一个消费者)的主线程,它们对缓冲区的访问是使用信号量处理的。

我的问题是:分配信号量的最佳做法是什么? 目前我正在考虑两种选择:

1) 将信号量声明为全局变量,以便主线程和 2 个线程可以全局访问它们;

2) 在 main 中声明信号量,然后将它们的指针传递给线程。

哪种解决方案最好?或者您有其他解决方案/建议吗?

一般应避免使用全局变量。它更安全,我会说更多 readable/logical 以在 main 中声明它们并通过构造函数或某些 setter 方法将它们传递给线程的方式。尽管可能最具可读性的是将缓冲区和信号量放在一个结构中并将其指针传递给线程。