문제

I was wondering whether it would ever make sense to use a mutex or semaphore when there is only one thread?.

Thanks for your help.

도움이 되었습니까?

해결책

I design thread protection into my components because they are reusable and scalable components intended to work in any environment I can realistically anticipate. Many times they are initially used in a single thread environment. Often times the scope of the implementation expands to include more threads. Then I don't have to chase down resources to protect from the new access scenarios.

다른 팁

Mutex can make sense, since Mutex can be used for system wide sharing, instead of internal process-wide sharing. For example, you can use a Mutex to prevent an application from being started twice.

This may be a bit out there but lets say you are writing a recursive function and you want each level to register with a separate resource. This way you can keep the responsibility of cleaning up the resource in one place (The resource pool).

Sounds like a trick question. Technically, yes. A named mutex can be used to synch multiple processes containing a single thread in each.

You can use system-wide semaphores (and even mutexes) to do inter-process communication.

You can signal from a single-threaded process to another single-threaded process by acquire()/release()-ing on a named semaphore, for example.

In case the environment supports system interrupts it adds non-linear behaviour. Semaphore can be used in order to sleep in main thread until interrupt triggers.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top