【发布时间】:2020-02-06 11:35:18
【问题描述】:
嘿,我有以下问题:我有某种“注册”函数,它写入从线程调用的文件上,以便程序的行为如下:
main()
|
----------------------------------------
| | |
*thread 1 *thread2 *thread3
| | |
Register Register Register
| | |
----------------------------------------
|
sameFile
现在的问题是:我可以在寄存器函数中使用互斥体的关键部分吗(检查用户是否已经写入文件,然后写入文件)即使注册函数本身不是线程而是由线程调用? 或者我应该在调用注册函数之前在线程中使用互斥锁?
【问题讨论】:
-
您可以在任何地方使用互斥锁。函数不是线程。而且你不能没有线程。
-
如果它是从一个线程调用的,它就在一个线程上运行。 thread 不是函数,函数也不是线程。这是一种更高级别的执行原语。如果您需要在线程中调用函数并使用互斥锁保护这些函数的关键部分,您可以这样做。
标签: c multithreading mutex