线程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的时候是不会释放锁的

相关推荐
Ben土豆4 分钟前
LC 318. Maximum Product of Word Lengths
算法·leetcode
独自破碎E7 分钟前
Java 面经之 Kafka
java·开发语言·kafka
麻瓜老宋17 分钟前
C语言之波兰表达式的交互运行
c语言·开发语言·数据结构·算法
强里秋千墙外道26 分钟前
【Qt】Qt+Visual Studio 2022环境开发
开发语言·qt·visual studio
SchrodingerSDOG35 分钟前
算法刷题Day18: BM41 输出二叉树的右视图
数据结构·python·算法
向宇it38 分钟前
【从零开始入门unity游戏开发之——C#篇03】变量和常量
开发语言·vscode·unity·c#·游戏引擎
Aix9591 小时前
Dijkstra算法最短路径可视化(新)
python·opencv·算法
奶油泡芙9311 小时前
Powering the Hero (easy version)为英雄提供力量(简单版)
c++
重生之我是数学王子1 小时前
ARM体系架构
linux·c语言·开发语言·arm开发·系统架构
飞的肖1 小时前
RabbitMQ 安装、配置和使用介绍 使用前端js直接调用方式
开发语言·javascript·ruby