gpt4 book ai didi

C 中的缓存文件指针

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

我需要在程序中缓存文件指针,但问题是我可能有多个线程访问该文件指针缓存。例如,如果 thread1 请求文件指针,并且发生缓存未命中,则调用 fopen 并缓存该指针。现在,当线程 2 到达并且发生缓存命中时,两个文件共享读/写指针,从而导致错误。我想到的一些事情 -

  • 我可以跟踪文件何时使用,但目前我不知道它何时发布,并且包含此功能会扰乱我的设计
  • 我可以在命中时发送文件指针的副本,但我不知道有什么方法可以做到这一点,以便这两个副本不共享读/写位置

我应该如何进行?

最佳答案

您是否担心优化文件打开操作?我认为你让它变得比应有的更加复杂和容易出错。文件指针 (FILE*) 不是线程安全结构,因此您不能跨线程共享它们。

您可能需要做的(如果您确实想要缓存文件打开操作)是保留一个字典,将文件名映射到文件描述符(一个int),并有一个线程安全函数,可以按名称返回描述符,如果字典中没有描述符,则打开它。

当然,从多个线程对同一文件描述符进行 I/O 操作也需要进行监管。

关于C 中的缓存文件指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19028440/

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