我正在尝试使用 atomic_flag 实现自旋锁。我知道使用 C++11 我必须初始化 atomic_flag 变量,但我无法编译它。我的代码如下所示:
class SpinLock
{
public:
SpinLock()
:m_flag(ATOMIC_FLAG_INIT) /// syntax error : missing ')' before '{'
{
}
void lock()
{
while (m_flag.test_and_set() == true){}
}
void unlock()
{
m_flag.clear();
}
private:
SpinLock &operator=(const SpinLock &);
private:
std::atomic_flag m_flag;
};
当我编译代码时,我在'{''之前得到'语法错误:缺少')'。我还看到 ATOMIC_FLAG_INIT 被定义为 {0},但是正确的写法是什么?
以下编译,但它仍然是线程安全的吗?
SpinLock()
{
m_flag.clear();
}