gpt4 book ai didi

c++ - 这个锁 block 是如何工作的?

转载 作者:行者123 更新时间:2023-11-28 00:40:07 24 4
gpt4 key购买 nike

<分区>

我看到一个头文件如下:

#include <pthread.h>

#define lock(x) if(Lock _lock_=x){}else

class Mutex{
public:
Mutex(){
pthread_mutex_init(&mutex_, 0);
};

~Mutex(){
pthread_mutex_destroy(&mutex_);
};

friend class Lock;

private:
pthread_mutex_t mutex_;

void Lock(){
pthread_mutex_lock(&mutex_);
};

void Unlock(){
pthread_mutex_unlock(&mutex_);
};
};

class Lock{
public:
Lock(Mutex& mutex):mutex_(mutex){mutex_.Lock();};
~Lock(){mutex_.Unlock();};

operator bool() const {
return false;
}

private:
Mutex& mutex_;
};

它定义了一个lock(x)宏。下面是这个宏的使用方式:

...
Mutex mtx;
lock(mtx) {
// critical section
}
...

那么,这个锁定宏是如何工作的呢?为什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com