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

相关推荐
蜗牛love天空9 小时前
bfs广度优先搜索-二叉树遍历
c++
刘家炫9 小时前
C++ 中的模版元编程
c++·现代c++·模版元编程
dhdjjsjs9 小时前
Day30 Python Study
开发语言·前端·python
小白程序员成长日记9 小时前
2025.12.03 力扣每日一题
算法·leetcode·职场和发展
十五年专注C++开发9 小时前
async_simple:一个轻量级C++异步协程框架
开发语言·网络·c++·boost·asio
元亓亓亓9 小时前
LeetCode热题100--20. 有效的括号--简单
linux·算法·leetcode
熊猫_豆豆9 小时前
LeetCode 49.字母异位组合 C++解法
数据结构·算法·leetcode
难以触及的高度10 小时前
Java for循环完全指南:从基础到高性能实践
java·开发语言
wadesir10 小时前
用Python实现ggplot2风格绘图(零基础入门Seaborn与Matplotlib美化技巧)
开发语言·python·matplotlib
油炸自行车10 小时前
【Qt】Qt Creator Debug模式提示“缺少 Windows CDB 调试器配套的扩展组件“”
开发语言·windows·qt