MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/Falcor / lock

Method lock

Source/Falcor/Core/Platform/LockFile.cpp:104–131  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

102}
103
104bool LockFile::lock(LockType lockType)
105{
106 if (!mIsOpen)
107 return false;
108
109 bool success = false;
110#if FALCOR_WINDOWS
111 OVERLAPPED overlapped = {0};
112 overlapped.hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
113 DWORD flags = lockType == LockType::Shared ? 0 : LOCKFILE_EXCLUSIVE_LOCK;
114 success = ::LockFileEx(mFileHandle, flags, DWORD(0), ~DWORD(0), ~DWORD(0), &overlapped);
115 if (!success)
116 {
117 auto err = ::GetLastError();
118 if (err == ERROR_IO_PENDING)
119 {
120 DWORD bytes;
121 if (::GetOverlappedResult(mFileHandle, &overlapped, &bytes, TRUE))
122 success = true;
123 }
124 }
125 ::CloseHandle(overlapped.hEvent);
126#elif FALCOR_LINUX
127 int operation = lockType == LockType::Shared ? LOCK_SH : LOCK_EX;
128 success = ::flock(mFileHandle, operation) == 0;
129#endif
130 return success;
131}
132
133bool LockFile::unlock()
134{

Callers 6

acquireMethod · 0.80
runWorkerMethod · 0.80
runMethod · 0.80
CPU_TESTFunction · 0.80
workerMethod · 0.80
workerMethod · 0.80

Calls

no outgoing calls

Tested by 2

runMethod · 0.64
CPU_TESTFunction · 0.64