gpt4 book ai didi

linux - Linux 线程中的文件段/节/记录锁

转载 作者:太空宇宙 更新时间:2023-11-04 07:31:58 29 4
gpt4 key购买 nike

我有一个多线程进程,其中一个文件由多个线程共享(读取和写入)。有没有什么方法可以让一个线程锁定一个文件段,使其他线程无法访问它?我试过fcntl(fd, F_SETLKW, &flock),但是这个锁只对进程有效,对线程无效(一个进程中的所有线程共享一个锁)。

最佳答案

是的 - 但不是使用相同的机制。您将不得不使用诸如 pthread 互斥体之类的东西,并自己跟踪簿记。

如何完成这项工作的可能大纲

  • 等待并在簿记结构上声明进程级互斥锁
    • 确保您的进程中没有其他线程正在尝试使用该段
    • 将自己标记为正在使用文件段
  • 释放进程级互斥锁

  • 为进程获取 fnctl 锁(如果需要)

  • 写作
  • 释放 fnctl 锁以允许其他进程使用该段(如果需要)

  • 再次等待进程级簿记结构互斥体(如果您可以自动将其标记为未使用,则可能没有必要)

    • 在您的流程中将段标记为未使用。
  • 释放进程级互斥量

关于linux - Linux 线程中的文件段/节/记录锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12993120/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com