c++静态成员函数与线程同步(static member functions and thread-safety)
2011-09-08 10:51
513 查看
如果C++的类中含有静态成员函数,那么该如何考虑其线程安全性呢?
见下面实例:
Now variable 'a' is local to each call of func(). If two threads call func() at the same time, they get different versions of 'a'.
'b' is a static local. The value persists between different calls of func(). If two threads call func() at the same time, they access the same version of 'b' so they might need to do synchronisation.
'c' is an instance variable; it is attached to a particular instantiation of CData. func() cannot access 'c', except with a trick I'll show below.
'd' is a static variable. There is one instance of 'd' shared between all uses of class CData so synchronisation may be necessary. It can be used easily from the static function func().
参考:
static member functions and thread-safety :点击打开链接
见下面实例:
class CData { public: static void func() { int a; static int b; } int c; static int d; }; int main() { CData::func(); }
Now variable 'a' is local to each call of func(). If two threads call func() at the same time, they get different versions of 'a'.
'b' is a static local. The value persists between different calls of func(). If two threads call func() at the same time, they access the same version of 'b' so they might need to do synchronisation.
'c' is an instance variable; it is attached to a particular instantiation of CData. func() cannot access 'c', except with a trick I'll show below.
'd' is a static variable. There is one instance of 'd' shared between all uses of class CData so synchronisation may be necessary. It can be used easily from the static function func().
参考:
static member functions and thread-safety :点击打开链接
相关文章推荐
- 【C++面向对象】类的静态成员函数(static member functions)
- static(c++)静态数据成员和静态成员函数
- C++里的静态(static)成员函数(不能用const的原因+static在c++中的第五种含义)
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)(转)
- C++ 类的 静态成员 (static) 静态成员函数 Static
- C++对象模型——Virtual Member Functions (虚拟成员函数)(第四章)
- 浅出理解静态成员函数(static member function)
- 浅出理解静态成员函数(static member function)
- C++静态成员和静态成员函数static
- Member Function Pointers and the Fastest Possible C++ Delegates - 成员函数指针与高性能的C++委托
- C++中静态成员函数与静态成员变量(static )
- 【C++】Accessor and Mutator Functions & 函数形参与类私有成员重名的解决方法
- C++的特殊成员函数(special member functions)及其生成规则
- 浅出理解静态成员函数(static member function)
- C/C++——为什么类的静态成员函数在定义的时候不写static?
- Some interesting facts about static member functions in C++
- C++学习笔记--类的静态成员变量和静态成员函数
- C++静态成员函数小结(转)
- 【编程拾遗】C++的static成员函数与单例模式