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

雅各布

我正在尝试解决 C 中的“生产者-消费者”练习。

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

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

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

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

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

弗拉基米尔

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中的信号量数组和相互分配

来自分类Dev

C信号量同步

来自分类Dev

C:信号处理和信号量

来自分类Dev

C中的信号量和fork()

来自分类Dev

C-信号量供股

来自分类Dev

如何正确销毁C中多个进程使用的共享未命名信号量?

来自分类Dev

将信号量放在共享内存C中

来自分类Dev

如何在C语言中获取“ mm信号量”?

来自分类Dev

如何在C中创建信号量?

来自分类Dev

在Linux C#上运行信号量

来自分类Dev

使用posix C同时轮询信号量多次

来自分类Dev

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

来自分类Dev

使用信号量处理C语言中的套接字

来自分类Dev

Objective-C信号量有问题吗?

来自分类Dev

信号量C#两个线程

来自分类Dev

在Objective C中对信号量使用委托方法

来自分类Dev

在 c 中使用 POSIX 信号量的多线程

来自分类Dev

作家偏好在 C++ 中使用信号量

来自分类Dev

如何在C中正确捕捉信号

来自分类Dev

信号处理程序调用后不会删除 C 中的命名信号量

来自分类Dev

Linux C ++创建具有最大值的信号量

来自分类Dev

C ++中的多线程,仅检查信号量是否已锁定

来自分类Dev

C使用信号量和线程打印乒乓球

来自分类Dev

信号量C#对象同步方法是从未同步的代码块中调用的

来自分类Dev

在Linux中,如何使用带有C的信号量同步两个进程的输出?

来自分类Dev

Linux C ++创建具有最大值的信号量

来自分类Dev

C ++中的多线程,仅检查信号量是否已锁定

来自分类Dev

C使用信号量和线程打印乒乓球

来自分类Dev

生产者-消费者在 C 中使用信号量