您的位置:首页 > 编程语言 > C语言/C++

c++静态成员函数与线程同步(static member functions and thread-safety)

2011-09-08 10:51 513 查看
如果C++的类中含有静态成员函数,那么该如何考虑其线程安全性呢?

见下面实例:

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 :点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: