【问题标题】:How to synch the writing on a file from multiple thread如何从多个线程同步写入文件
【发布时间】:2020-02-06 11:35:18
【问题描述】:

嘿,我有以下问题:我有某种“注册”函数,它写入从线程调用的文件上,以便程序的行为如下:

                        main()
                         |
        ----------------------------------------
        |                 |                    |                  
       *thread 1       *thread2             *thread3
        |                 |                    |
      Register           Register            Register  
        |                 |                    |
        ----------------------------------------
                          |
                       sameFile

现在的问题是:我可以在寄存器函数中使用互斥体的关键部分吗(检查用户是否已经写入文件,然后写入文件)即使注册函数本身不是线程而是由线程调用? 或者我应该在调用注册函数之前在线程中使用互斥锁?

【问题讨论】:

  • 您可以在任何地方使用互斥锁。函数不是线程。而且你不能没有线程。
  • 如果它是从一个线程调用的,它就在一个线程上运行。 thread 不是函数,函数也不是线程。这是一种更高级别的执行原语。如果您需要在线程中调用函数并使用互斥锁保护这些函数的关键部分,您可以这样做。

标签: c multithreading mutex


【解决方案1】:

您可以在任何有意义的地方使用互斥锁。

没有函数一个线程,它们都只是函数——其中一个是线程启动时调用的第一个函数。虽然这可能是由内部库函数调用的,但它实际上并不比它稍后调用的任何其他函数更特别。

在函数中使用互斥锁(您希望从多个线程中调用)来保护共享资源正是正常的用例。

【讨论】:

  • 非常感谢,我实际上是线程概念的新手。另外,如果您有一些关于线程的好资源,我会很高兴阅读它们!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多