具有全局变量的 pthread 互斥锁:正确用法?
pthread mutex with a global variable: correct usage?
我理解 pthreads 中互斥锁的用途,但我经常在这里认为使用带有全局变量的互斥锁作为共享资源被认为是一种不好的做法(例如,就像这个问题的答案一样:Mutex lock threads).
所以,问题:
- 把共享资源作为全局变量真的有那么糟糕吗?
- 如果您只有 1 个共享变量,就像示例中那样,是否可以使用全局变量,还是仍然不行?
- 在进程之间共享变量的更好方法是什么?
总的来说:
Global Variable are Evil:
是的,您必须在主线程中创建一个变量并将引用传递给必须使用它的其他线程,即使您只有一个共享变量也是如此。
把共享资源作为全局变量真的有那么糟糕吗?
视情况而定,由开发者决定。但一般我们需要谨慎使用共享变量作为全局变量。例如,如果程序很简单,那么管理全局变量就很容易,如果程序很复杂并且足够大,并且有其自身的其他复杂性,那么维护起来就有些不容易了。
如果您只有 1 个共享变量,就像示例中那样,是否可以使用全局变量,还是仍然不行?
上面的回答也回答了这个问题。
在进程之间共享变量的更好方法是什么?
你可以继续用一些适合你的序列化方法 .
我理解 pthreads 中互斥锁的用途,但我经常在这里认为使用带有全局变量的互斥锁作为共享资源被认为是一种不好的做法(例如,就像这个问题的答案一样:Mutex lock threads).
所以,问题:
- 把共享资源作为全局变量真的有那么糟糕吗?
- 如果您只有 1 个共享变量,就像示例中那样,是否可以使用全局变量,还是仍然不行?
- 在进程之间共享变量的更好方法是什么?
总的来说:
Global Variable are Evil:
是的,您必须在主线程中创建一个变量并将引用传递给必须使用它的其他线程,即使您只有一个共享变量也是如此。
把共享资源作为全局变量真的有那么糟糕吗?
视情况而定,由开发者决定。但一般我们需要谨慎使用共享变量作为全局变量。例如,如果程序很简单,那么管理全局变量就很容易,如果程序很复杂并且足够大,并且有其自身的其他复杂性,那么维护起来就有些不容易了。
如果您只有 1 个共享变量,就像示例中那样,是否可以使用全局变量,还是仍然不行?
上面的回答也回答了这个问题。
在进程之间共享变量的更好方法是什么?
你可以继续用一些适合你的序列化方法 .