我正在尝试使用 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();
  }