单线程中的信号量

时间:2010-06-21 20:36:40

标签: multithreading mutex semaphore single-threaded

我想知道在只有一个线程时使用互斥锁或信号量是否合理?

感谢您的帮助。

6 个答案:

答案 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)

如果环境支持系统中断,则会添加非线性行为。 可以使用信号量以便在主线程中休眠,直到中断触发。