MCPcopy Create free account
hub / github.com/catboost/catboost / TryLock

Method TryLock

library/cpp/lfalloc/lf_allocX64.h:635–653  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

633 while (!TryLock(lk));
634 }
635 bool TryLock(TLFLockData *lk)
636 {
637 Y_ASSERT_NOBT(LockData == nullptr);
638 if (lk->TryLock()) {
639 LockData = lk;
640 return true;
641 }
642 if ((++Attempt & SleepMask) == 0) {
643 lk->FutexWait();
644 SleepMask = (SleepMask * 2 + 1) & 0x7fff;
645 } else {
646#ifdef _MSC_VER
647 _mm_pause();
648#elif defined(__i386) || defined(__x86_64__)
649 __asm__ __volatile__("pause");
650#endif
651 }
652 return false;
653 }
654 ~TLFLockHolder() {
655 if (LockData) {
656 LockData->Unlock();

Callers

nothing calls this directly

Calls 3

_mm_pauseFunction · 0.85
FutexWaitMethod · 0.80
TryLockMethod · 0.45

Tested by

no test coverage detected