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

问题描述 投票:0回答:2

fcntl 使用代码

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

问题是,fcntl 不锁定文件。

结果

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

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

c linux systems-programming fcntl
2个回答
2
投票

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

Linux 手册页说:

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


0
投票

fcntl是进程级别的,可以使用flock

© www.soinside.com 2019 - 2024. All rights reserved.