我想知道在只有一个线程时使用互斥锁或信号量是否合理?
感谢您的帮助。
答案 0 :(得分:4)
我将线程保护设计到我的组件中,因为它们是可重用的,可扩展的组件,可以在我能够实际预期的任何环境中工作。很多时候,它们最初用于单线程环境中。通常,实现的范围扩展到包括更多线程。然后,我不必追逐资源来保护新的访问方案。
答案 1 :(得分:1)
Mutex可以理解,因为Mutex可以用于系统范围的共享,而不是内部进程范围的共享。例如,您可以使用互斥锁prevent an application from being started twice。
答案 2 :(得分:1)
这可能有点不过但是假设您正在编写递归函数,并且您希望每个级别都使用单独的资源进行注册。这样,您就可以在一个地方(资源池)中负责清理资源。
答案 3 :(得分:1)
听起来像一个技巧问题。从技术上讲,是的。命名互斥锁可用于同步包含每个进程中的单个线程的多个进程。
答案 4 :(得分:1)
您可以使用system-wide semaphores
(甚至是互斥)来inter-process communication
。
例如,您可以通过acquire()/release()
在单个线程进程中发信号通知命名信号量。
答案 5 :(得分:1)
如果环境支持系统中断,则会添加非线性行为。 可以使用信号量以便在主线程中休眠,直到中断触发。