我想同步对文件的访问。我使用Linux和g++。
我想使用函数flock()来锁定文件。我开发了两个测试应用程序,对同一文件进行写入和读取。它们都使用LOCK_SH调用flock()。
写入者先开始写,然后睡觉。第二个应用程序稍后启动。我期望看到阅读器应用程序在调用flock()时阻塞,因为写入器进程没有释放锁。
这是正确的预期吗?还是只有在同时调用read()和write()时才会阻塞?我误解了什么?
PROG A PROG B
-open file
-flock -open file
-write -sleep 5
-sleep 1000 -flock ** expected to block ?? **
-close -read data发布于 2013-01-16 18:49:19
只有在至少有一个进程将其与LOCK_EX一起使用时,flock才会阻塞
通常,您应该对读使用共享锁,对写或读/写使用独占锁。
发布于 2013-01-16 18:46:51
LOCK_SH是一个共享锁。这意味着同时持有这样一个锁的多个进程没有问题。这种锁由读者使用。
https://stackoverflow.com/questions/14356451
复制相似问题