gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:57:08 26 4
gpt4 key购买 nike

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

最佳答案

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

如何完成这项工作的可能概述

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

  • 获取进程的 fnctl 锁(如有必要)

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

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

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

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

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