什么是最好的方法来传递参数线程在C Windows中?

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

我的select,我看到他们:

  1. 使variables全局,以便线程可以使用它们(不需要保护它们,因为线程不会改变它们)。 我不愿意使用这个,因为全局variables不太好

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

还有其他的select吗? 哪一个被认为更好?

谢谢 !

这将是一个“强制”的结构,除了线程的参数以外没有任何意义

这听起来像一个很好用于一个结构。 数据成员都是相关的,因为他们都需要传递给线程。

这并不比第一个选项更复杂(除非有人考虑定义一个结构并复制一些变量变得复杂)。 这确实是一个更多的代码,但是它也应该使代码看起来更容易,并且确切地看到给线程的数据。

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

我还要提到,如果一个线程的参数真的是完全不相关的,我不得不想知道你的线程在做什么,特别是设计是否需要一些工作。 应该有一个逻辑关系,理由是一个线程本身应该是合乎逻辑的 – 如果输入是非真实的,那么对它们的操作也应该是分开的。