是否可以在文件上使用 fcntl() 系统调用来实现线程/进程同步(而不是信号量)?

有帮助吗?

解决方案

是。的Unix的fcntl锁(和文件系统资源通常)是全系统的,所以执行的任何两个线程(它们被单独的进程或不)可以使用它们。是否这是一个好主意,或不是与上下文相关的。

其他提示

这是进程之间同步的一种方法,但如果您不想使用信号量,则可以使用进程共享互斥体,例如使用 PTHREAD_PROCESS_SHARED 基于 POSIX 的平台上的属性(请参阅 pthread_mutexattr_setpshared()pthread_condattr_setpshared())。另一种选择是使用基于事件的 IPC(套接字等)机制,该机制会阻塞,直到您定义的事件被多路分解(例如通过 select())。还有其他几个基于共享内存的选项。

但是,由于您使用的是 C++,我建议使用 C++ 框架,它可以极大地简化跨多个平台的进程间同步,例如 增强进程间 或者 高手.

在的fcntl和群不是为螺纹,但对于过程,所以它们不能被用于线程同步。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top