Пример #1
0
 void lock() {
     Node::Ptr unlocked(nullptr, 0);
     if (!tail_.compare_exchange_strong(unlocked, Node::Ptr(nullptr, 1),
                                        std::memory_order_acquire)) {
         slowpathLock(unlocked);
     }
 }
Пример #2
0
 void lock() {
     XEDGE(lock, out);
     Node::Ptr unlocked(nullptr, 0);
     if (!L(lock,
            tail_.compare_exchange_strong(unlocked, Node::Ptr(nullptr, 1)))){
         LS(lock, slowpathLock(unlocked));
     }
     LPOST(out);
 }