我正试图解决C中的“生产者 - 消费者”练习。
我创建了两个线程(一个生产者和一个消费者),并且使用信号量处理它们对缓冲区的访问。
我的问题是:哪个是分配信号量的最佳做法? 目前我正在考虑两种选择:
1)将信号量声明为全局变量,因此主线程和2个线程可以全局访问它们;
2)声明main中的信号量,然后将它们的指针传递给线程。
哪种解决方案最好?或者您有其他解决方案/建议吗?
答案 0 :(得分:1)
一般应避免使用全局变量。它更安全,我会说更可读/逻辑的方式在main中声明它们并通过构造函数或某些setter方法将它们传递给线程。虽然可能最可读的是你将缓冲区和信号量放在一个结构中并将其指针传递给线程。