在C窗口中将参数传递给线程的最佳方法是什么?

时间:2011-03-02 22:42:45

标签: c++ c windows multithreading arguments

您好 我有一个使用几个变量的线程。 变量在运行时由argv []确定。

我看到他们的选择:

  1. 使变量成为全局变量,因此线程可以使用它们(不需要保护它们,因为线程不会更改它们)。我不愿意使用它,因为全局变量不太好

  2. 创建一个结构来保存变量并将其传递给线程。 varibales并没有真正相关,因此它将是一个“强制”结构,除了线程的参数之外没有任何意义。此外,比选项1更复杂

  3. 还有其他选择吗?哪一个被认为更好?

    谢谢!

2 个答案:

答案 0 :(得分:8)

  

它将是一个“强制”结构,除了线程

的参数之外没有任何意义

这对于结构来说听起来非常好用。数据成员都是相关的,因为它们都需要传递给线程。

它并不比第一个选项复杂得多(除非考虑定义一个结构并将一些变量复制为复杂的)。确实,这是一个更多的代码,但它也应该更容易查看代码并确切地查看为线程提供的数据。

答案 1 :(得分:0)

没有什么真正的问题,第二个是正确的方法。使用多线程,全局变得特别有问题。如果在执行期间发生了变化,它们甚至会成为问题,因为你需要某种互斥(或其他)来保护它们,因为它们正在被修改。它们很容易成为瓶颈,因为所有序列化使用这些全局变量。

我还要提到,如果一个线程的参数确实完全不相关,我不得不想知道你的线程在做什么,以及(特别是)设计是否需要一些工作。应该有一个逻辑关系,原因很简单,一个线程本身应该是逻辑的 - 如果输入真的不相关,那么对它们的操作也应该是分开的。