【问题标题】:Pthread: Multiple File AccessPthread:多文件访问
【发布时间】:2014-09-02 16:33:10
【问题描述】:

我有两个线程将访问多个文件。这两个线程可能会尝试同时访问同一个文件。在这种情况下,我如何保证在这种情况下使用 C 中的 pthread 函数和结构对文件进行独占访问,知道这两个线程将访问大量文件?我知道我可以创建大量互斥体,但这似乎不是可行的方法,因为该数量是有限制的。

【问题讨论】:

  • 为每个文件维护一个锁,并在任何线程想要访问文件时使用它。
  • 为什么线程会有同时访问同一个文件的风险?你能阻止这种可能性吗?线程是否关闭文件?什么是“非常大量的文件”?数十、数百、数千,甚至更多?文件列表来自哪里?
  • 1.他们将面临访问同一个文件的风险,因为他们都会对它们进行写入和读取操作。 2. 我不能。 3. 线程既不打开也不关闭文件,访问是通过库完成的。 4.大量文件是数千或数万左右的数字。 5.文件列表是预定的,我事先知道的。

标签: c concurrency pthreads


【解决方案1】:

让每个线程使用例如flock() 对即将访问的文件进行建议性写锁定。

【讨论】:

  • 我不能使用flock() 也不能使用flockfile() 因为我没有处理文件的打开和关闭,这些事情是由一个库处理的,因此我特别要求一个解决方案使用 pthread 材料。我考虑过使用互斥池并散列文件的名称以匹配该池中的特定互斥锁。这是个好主意吗?由于两个线程都可以读写文件,我应该使用读写锁而不是互斥锁吗?
  • 使用任何唯一的、特定于文件的信息来访问特定于文件的读写锁应该可以工作。
猜你喜欢
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多