Ejemplo_4.cpp

Prevencion de deadlocks con varios mutex
 avatar
TomasOrtellado
c_cpp
12 days ago
697 B
2
Indexable
// Prevencion de deadlocks con varios mutex
#include <iostream>
#include <thread>
#include <mutex>

std::mutex mtx1, mtx2;

void tareaA() {
    std::lock(mtx1, mtx2);
    std::lock_guard<std::mutex> lock1(mtx1, std::adopt_lock);
    std::lock_guard<std::mutex> lock2(mtx2, std::adopt_lock);
    std::cout << "Tarea A completada.\n";
}

void tareaB() {
    std::lock(mtx1, mtx2);
    std::lock_guard<std::mutex> lock1(mtx1, std::adopt_lock);
    std::lock_guard<std::mutex> lock2(mtx2, std::adopt_lock);
    std::cout << "Tarea B completada.\n";
}

int main() {
    std::thread t1(tareaA);
    std::thread t2(tareaB);

    t1.join();
    t2.join();

    return 0;
}

Leave a Comment