考虑这样一种情况,两个进程同时尝试使用flock(fd, LOCK_EX|LOCK_NB)
.
如前所述,尝试是非阻塞的,因此两个进程之一应该以EWOULDBLOCK
.
这是我的问题:(Linux)实现是否flock()
保证两个进程中的一个在每种情况下都会成功?EWOULDBLOCK
或者,即使没有其他人干预,是否有可能两者最终都失败了?
简而言之,可以flock(fd, LOCK_EX|LOCK_NB)
用EWOULDBLOCK
?
我主要对flock()
Linux 提供的版本感兴趣,但flock()
非常欢迎有关其他系统(例如 OS X)的信息。
另外,我假设无论锁是独占的(LOCK_EX
)还是共享的(LOCK_SH
),答案都是一样的。如果没有,请告诉我。