我想实现类似于InitializeCriticalSectionAndSpinCount的东西,但更具可移植性。 我在Boost中找到了spinlock的实现,但是在文档中我们可以读到:
自旋锁的目的是防止多个线程同时访问共享数据结构。与互斥锁相比,线程将忙于等待并浪费CPU周期,而不是将CPU交给另一个线程。
所以它与Windows InitializeCriticalSectionAndSpinCount
不同当一个线程试图获取一个被锁定的关键部分时,线程会旋转:它进入一个迭代旋转计数次数的循环,检查锁是否被释放。如果在循环结束之前未释放锁定,则线程将进入休眠状态以等待锁定被释放。
因为在提升线程中没有进入睡眠状态?
我也找到了 Implementing a spinlock in Boost. Example Needed
我认为它提供了不同的机制,即InitializeCriticalSectionAndSpinCount或者我错了?