On 10/28/2014 04:28 PM, Ruslan Baratov wrote: > What do you think about this:
Thanks for drafting the signature. > file( > LOCK <path> > [DIRECTORY] # if present locked file will be <path>/cmake.lock > (instead of <path>) > [RELEASE] # do explicit unlock > [GUARD <FUNCTION|FILE|PROCESS>] # if not present - set to `GUARD > PROCESS` (not used if RELEASE) > [RESULT_VARIABLE <variable>] # 0 on success, error message > otherwise; if not present - any error is FATAL_ERROR > [TIMEOUT <seconds>] > # 0 - return immediately if operation failed (try_lock), > otherwise timeout (timed_lock); > # if not present - lock until success (or error); > # not used if RELEASE; > ) That looks good. The TIMEOUT unit can be 'seconds' but it should accept a floating point value to get shorter times if possible. > Boost implementation of file locking mechanism use > LockFileEx/UnlockFileEx for windows and fcntl for unix-like platforms. > These functions lock file only for current process. When process crashes > lock removed by OS automatically. Great! > I've tried (Un)LockFileEx/fcntl on windows (including mingw and cygwin), > linux and mac - works fine for me with one exception: cygwin's lock is > not visible by win32's lock. I.e. you can synchronize multiple cygwin > processes and multiple windows "normal" processes, but you can't mix them. Thanks for testing. The windows/cygwin mixing limitation is acceptable IMO. Thanks, -Brad -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake-developers