【发布时间】:2012-12-30 15:45:08
【问题描述】:
我想同步对文件的访问。我正在使用 Linux 和 g++。
我想使用函数flock() 锁定文件。
我开发了 2 个测试应用程序,向/从同一个文件写入和读取。
他们都用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
【问题讨论】:
标签: c++ c linux file concurrency