如何从多个线程同步文件的写入

How to synch the writing on a file from multiple thread

嘿,我遇到了以下问题:我有某种 "Registration" 函数写入一个文件,该文件是从一个线程调用的,因此程序的行为如下:

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

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

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

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

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