Single thread deadlock
#include <mutex>
std::mutex mutex1;
void deadlock_1() {
std::lock_guard<std::mutex> lockGuard(mutex1);
deadlock_1_1();
}
void deadlock_1_1() {
std::lock_guard<std::mutex> lockGuard(mutex1);
}
void deadlock_2() {
std::lock_guard<std::mutex> lockGuard(mutex1);
deadlock_2_1();
}
void deadlock_2_1() {
deadlock_2();
}
Multi Thread Deadlock - Deadlock occurs when executed in numerical order
#include <mutex>
std::mutex mutex1;
std::mutex mutex2;
void deadlock_3_thread_1() {
std::lock_guard<std::mutex> lockGuard(mutex1);
std::lock_guard<std::mutex> lockGuard(mutex2);
}
void deadlock_3_thread_2() {
std::lock_guard<std::mutex> lockGuard(mutex2);
std::lock_guard<std::mutex> lockGuard(mutex1);
}
No comments:
Post a Comment