线程sleep的时候会释放锁吗

来看一段代码:

cpp 复制代码
void task1(mutex &m) {
    cout << "thread 1 init..." << endl;
    {
        std::unique_lock<mutex> lock(m);
        cout << "thread 1 getLock" << endl;
        sleep(5);
    }
    cout << "thread 1 freeLock" << endl;
    cout << "thread 1 exit..." << endl;
}


void task2(mutex &m) {
    cout << "thread 2 init..." << endl;
    {
        std::unique_lock<mutex> lock(m);
        cout << "thread 2 getLock" << endl;
    }
    cout << "thread 2 freeLock" << endl;
    cout << "thread 2 exit..." << endl;
}


int main() {
    mutex m;
    jthread t1(task1, std::ref(m));
    sleep(1);
    jthread t2(task2, std::ref(m));
}

代码的输出:

cpp 复制代码
thread 1 init...
thread 1 getLock
thread 2 init...
thread 1 freeLock
thread 1 exit...
thread 2 getLock
thread 2 freeLock
thread 2 exit...

可以看出:线程在sleep的时候是不会释放锁的

相关推荐
紫陌涵光18 分钟前
108.将有序数组转换为二叉搜索树
数据结构·算法·leetcode
iAkuya28 分钟前
(leetcode)力扣100 75前K个高频元素(堆)
java·算法·leetcode
m0_5312371732 分钟前
C语言-操作符练习
c语言·开发语言
tod11340 分钟前
C++核心知识点全解析(二)
开发语言·c++·面试经验
载数而行5201 小时前
算法系列2之最短路径
c语言·数据结构·c++·算法·贪心算法
weixin_440401691 小时前
Python数据分析(空值、重复值检测删除与设置)
开发语言·python·数据分析
消失的旧时光-19431 小时前
C++ 多线程与并发系统取向(五)—— std::atomic:原子操作与状态一致性(类比 Java Atomic)
开发语言·jvm·c++·并发
资深web全栈开发1 小时前
CoI - 组合优于继承:解耦的艺术
android·java·开发语言
低频电磁之道1 小时前
C++中预定义宏
开发语言·c++
工程师0071 小时前
MQTT 概念详解与 C# 实战
开发语言·c#·mqtt通信