fcntl 在多线程程序中不起作用不锁定文件

问题描述

fcntl using code

嗨。我正在尝试访问具有多个线程的文件, 尝试与记录锁(fcntl)同步。

问题是,fcntl 没有锁定文件

result

我试过: 每个线程都有自己的文件描述符/一个文件描述符(全局), 检查了fcntl的参数,没有找到原因或解决方法

我写的函数有什么问题吗?或者在多线程中使用 fcntl 时可能需要了解什么?

解决方法

fcntl 实现了进程级锁定。显然,您的所有线程都位于同一个进程中,因此没有中间锁(或者,换句话说:进程中的所有线程共享相同的锁)。

Linux 手册页说:

进程中的线程共享锁。换句话说,一个 多线程程序不能使用记录锁定来确保 线程不会同时访问文件的同一区域。