Junior — Middle
Have you ever used mutual exclusion mechanisms to synchronize threads or processes?
sobes.tech AI
Answer from AI
Deadlock is a situation where two or more threads or processes permanently block each other, waiting for resources held by each other.
To synchronize threads and prevent deadlocks in C/C++, various mechanisms are often used:
- Using mutexes (
std::mutex) with careful resource acquisition order. - Applying
std::lockorstd::scoped_lockfor simultaneous locking of multiple mutexes without the risk of deadlock. - Using timeouts when attempting to acquire locks to avoid infinite waiting.
An example with std::scoped_lock, which prevents deadlock when acquiring two mutexes:
#include <mutex>
std::mutex mtx1, mtx2;
void safeFunction() {
std::scoped_lock lock(mtx1, mtx2); // acquires both mutexes simultaneously
// critical section
}
When working with threads, it is important to follow the resource acquisition order and use modern synchronization tools to avoid deadlocks.