我想知道当只有一个线程时使用互斥锁或信号量是否有意义?
谢谢你的帮助。
我在我的组件中设计了线程保护,因为它们是可重用和可扩展的组件,旨在在我可以实际预期的任何环境中工作。很多时候,它们最初是在单线程环境中使用的。通常,实现的范围会扩展到包括更多线程。然后我不必追逐资源来保护新的访问场景。
Mutex 是有意义的,因为 Mutex 可用于系统范围的共享,而不是内部进程范围的共享。例如,您可以使用 Mutex 来防止应用程序被启动两次。
这可能有点过时,但假设您正在编写一个递归函数,并且您希望每个级别都注册一个单独的资源。这样您就可以在一个地方(资源池)负责清理资源。
听起来像个技巧问题。从技术上讲,是的。命名互斥锁可用于同步多个进程,每个进程包含一个线程。
您可以使用system-wide semaphores
(甚至互斥锁)来执行inter-process communication
.
acquire()/release()
例如,您可以通过对命名信号量进行 -ing 从单线程进程向另一个单线程进程发出信号。
如果环境支持系统中断,它会添加非线性行为。信号量可用于在主线程中休眠,直到中断触发。