您好 我有一个使用几个变量的线程。 变量在运行时由argv []确定。
我看到他们的选择:
使变量成为全局变量,因此线程可以使用它们(不需要保护它们,因为线程不会更改它们)。我不愿意使用它,因为全局变量不太好
创建一个结构来保存变量并将其传递给线程。 varibales并没有真正相关,因此它将是一个“强制”结构,除了线程的参数之外没有任何意义。此外,比选项1更复杂
还有其他选择吗?哪一个被认为更好?
谢谢!
答案 0 :(得分:8)
它将是一个“强制”结构,除了线程
的参数之外没有任何意义
这对于结构来说听起来非常好用。数据成员都是相关的,因为它们都需要传递给线程。
它并不比第一个选项复杂得多(除非考虑定义一个结构并将一些变量复制为复杂的)。确实,这是一个更多的代码,但它也应该更容易查看代码并确切地查看为线程提供的数据。
答案 1 :(得分:0)
没有什么真正的问题,第二个是正确的方法。使用多线程,全局变得特别有问题。如果在执行期间发生了变化,它们甚至会成为问题,因为你需要某种互斥(或其他)来保护它们,因为它们正在被修改。它们很容易成为瓶颈,因为所有序列化使用这些全局变量。
我还要提到,如果一个线程的参数确实完全不相关,我不得不想知道你的线程在做什么,以及(特别是)设计是否需要一些工作。应该有一个逻辑关系,原因很简单,一个线程本身应该是逻辑的 - 如果输入真的不相关,那么对它们的操作也应该是分开的。