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

Method Unlock

library/cpp/lfalloc/lf_allocX64.h:607–619  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

605 }
606
607 void Unlock()
608 {
609 Y_ASSERT_NOBT(LockVar != LF_LOCK_FREE);
610 if (DoCas(&LockVar, LF_LOCK_FREE, LF_LOCK_LOCKED) != LF_LOCK_LOCKED) {
611 Y_ASSERT_NOBT(LockVar == LF_LOCK_FUTEX_WAIT && LFHasFutex);
612 LockVar = LF_LOCK_FREE;
613#ifdef _win_
614 WakeByAddressAll((PVOID)&LockVar);
615#elif defined(_linux_)
616 syscall(SYS_futex, &LockVar, FUTEX_WAKE_PRIVATE, INT_MAX, 0, 0, 0);
617#endif
618 }
619 }
620};
621
622static TLFLockData LFGlobalLock;

Callers 1

~TLFLockHolderMethod · 0.45

Calls 1

DoCasFunction · 0.70

Tested by

no test coverage detected