Dmi*_*kov 31 c++ linux multithreading boost
我有一个课,我可以有很多实例.在里面它创建并初始化来自第三方库(使用一些全局变量)的一些成员,并且不是线程安全的.
我想过使用静态boost :: mutex,它将被锁定在我的类构造函数和析构函数中.因此,在我的线程中创建和销毁实例对第三方成员来说是安全的.
class MyClass
{
static boost::mutex mx;
// 3rd party library members
public:
MyClass();
~MyClass();
};
MyClass::MyClass()
{
boost::mutex::scoped_lock scoped_lock(mx);
// create and init 3rd party library stuff
}
MyClass::~MyClass()
{
boost::mutex::scoped_lock scoped_lock(mx);
// destroy 3rd party library stuff
}
我无法链接,因为我收到错误:
undefined reference to `MyClass::mx`
Run Code Online (Sandbox Code Playgroud)
我需要对这种静态成员进行一些特殊的初始化吗?
使用静态互斥锁有什么不对吗?
编辑: 链接问题已在cpp中使用正确的定义修复
boost::mutex MyClass::mx;
Run Code Online (Sandbox Code Playgroud)
Ste*_*eel 48
您已声明,但未定义您的类静态互斥锁.只需添加该行
boost::mutex MyClass::mx;
Run Code Online (Sandbox Code Playgroud)
使用MyClass实现cpp文件.
归档时间: |
|
查看次数: |
35894 次 |
最近记录: |