Skip to content

没解决的问题

2、多线程怎么实现

6、死锁是什么,解决死锁方法?

#include <iostream>
#include <thread>
#include <mutex>
#include <unistd.h>

using namespace std;

int data = 1;
mutex mt1,mt2;

void a2() {
    mt2.lock();
    sleep(1);
    data = data * data;
    mt1.lock();  //此时a1已经对mt1上锁,所以要等待
    cout<<data<<endl;
    mt1.unlock();
    mt2.unlock();
}
void a1() {
    mt1.lock();
    sleep(1);
    data = data+1;
    mt2.lock();  //此时a2已经对mt2上锁,所以要等待
    cout<<data<<endl;
    mt2.unlock();
    mt1.unlock();
}

int main() {
    thread t2(a2);
    thread t1(a1);

    t1.join();
    t2.join();
    cout<<"main here"<<endl;  //要t1线程、t2线程都执行完毕后才会执行
    return 0;
}

所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。

20、线程池里的同步和调度怎么做

21、读写锁怎么实现的

22、进程的内存管理

23、程序的内存释放