问题描述
fcntl using code
嗨。我正在尝试访问具有多个线程的文件,
尝试与记录锁(fcntl)同步。
问题是,fcntl 没有锁定文件。
result
我试过:
每个线程都有自己的文件描述符/一个文件描述符(全局),
检查了fcntl的参数,没有找到原因或解决方法。
我写的函数有什么问题吗?或者在多线程中使用 fcntl 时可能需要了解什么?
解决方法
fcntl 实现了进程级锁定。显然,您的所有线程都位于同一个进程中,因此没有中间锁(或者,换句话说:进程中的所有线程共享相同的锁)。
Linux 手册页说:
进程中的线程共享锁。换句话说,一个
多线程程序不能使用记录锁定来确保
线程不会同时访问文件的同一区域。