C++ 静态函数复制

标签 c++ multithreading static-functions

假设我有一个带有静态函数的类。该类的构造函数使用静态函数作为其入口点执行 pthread_create。

我的问题是:

如果我有这个类的多个实例,它们是否都会使用该函数运行自己的线程?这样做有什么问题吗?而且......如果函数本身有静态变量,我会不会遇到它不能重入的问题?

最佳答案

如果您的构造函数每次都执行 pthread_create(),那么您将拥有与对象一样多的线程。如果这些线程访问您类中的 static 变量,您将需要确保对这些变量的访问受到互斥锁的保护。 (此外,如果这些线程访问非static 变量,您也需要保护那些,以免其他调用者调用您的对象的方法)。

每个对象一个线程可能太多了,因此您可能需要重新考虑您的设计。

关于C++ 静态函数复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196094/

相关文章:

c++从虚函数调用静态函数

c++ - 如何将一个 vector 传递给另一个 vector 推回? (无需创建额外的变量来传递)

c++ - 到目前为止,我可以在 Visual Studio 2015 中使用 C++ 模块做什么? (使用实验开关)

C++自定义迭代器构造函数

c# - 在 .NET 中使用线程时出现 WebClient 错误

c++ - 静态变量和函数的使用

c++ - opencv4tegra : issues compiling sample stereo_match. cpp

php - 使用 pthreads 在 PHP 中的竞争条件

内核版本 3.x 的线程上的 Linux 内核编程

c++ - 未命名命名空间优于静态命名空间?