boost spin_condition 可以用于进程同步吗?

Can boost spin_condition be used for process synchronization?

我在interprocess_condition中看到下面的代码,我知道interprocess_condition是用于进程同步的,但我不确定spin_condition是否可以。

   private:
   #if defined(BOOST_INTERPROCESS_CONDITION_USE_POSIX)
      ipcdetail::posix_condition m_condition;
   #elif defined(BOOST_INTERPROCESS_CONDITION_USE_WINAPI)
      ipcdetail::winapi_condition m_condition;
   #else
      ipcdetail::spin_condition m_condition;   // this condition
   #endif

疑问

因为我发现spin_condition是通过volatile关键字变量实现的。 volatile关键字变量可以作为进程间的共享内存吗?

   spin_mutex  m_enter_mut;
   volatile boost::uint32_t    m_command;
   volatile boost::uint32_t    m_num_waiters;

可以。记忆就是这样,记忆。

如果在进程之间共享它,就该内存位置而言,它会有效地使来自不同进程的线程表现得像来自同一进程的线程。

但是,除非锁争用非常罕见,否则没有回退的自旋锁会导致功耗和吞吐量效率非常低。或者,如果您不关心效率但关心绝对延迟,则必须严格控制线程调度(有多少线程共存于同一个 machine/NUMA 节点/...、线程亲和性、线程优先级和实时调度选项等等)。实际上,除非您已经知道问题的答案,否则您不会拥有该控制权,因此建议必须远离仅自旋锁同步。