惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
M
MIT News - Artificial intelligence
G
Google Developers Blog
P
Proofpoint News Feed
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
爱范儿
爱范儿
罗磊的独立博客
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
C
Check Point Blog
美团技术团队
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - keleman

lambda 如何捕获 所在子线程ID 配置 git 到达 通过 git &&ssh 登录 gitee.com 和 github.com 整理于豆包问答,测试可以实现 由QThread::currentThread()引出的 如何在线程中安全运行任务 由豆包整理的 持有 std::unique_ptr 的 lambda → 不能放进 std::function 从豆包整理 C++ Lambda 捕获方式・安全写法速查表 整理自豆包 C++14 Lambda 相比 C++11 的核心改进 firefox 149 在 linux mint 21 上的 mozillia 源安装 qt GUI 如何利用q thread 和qfuturwatcher 实现 不阻塞主线程? xargs 和管道 |的区别 一加5t的volte怎么设置 做上位机软件设计 下位机软件设计 qt 将槽函数在子线程中执行的方法 以二级指针作为函数参数,并从函数中分配空间的原理 std::forward<T> ,std::move 使用场景的区别 VS2017 设置 类模板参数推导(CTAD, Class Template Argument Deduction) postEvent 和 sendEvent的区别 QObject Event( )customEvent( ) 函数区别 关于实际项目中必要的几个文件操作接口 【Debian】更换软件 源出现的Certificate问题解决方法 linux PS1 提示符的颜色设置 python 的几个常用的函数 知识点 设置 docker 国内的 映像加速器 docker 容器安装软件 docke 容器设置代理 docker 安装问题
QwaitCondition.的工作原理
keleman · 2024-10-30 · via 博客园 - keleman

背景: 之前 只知道个 QWaitCondition 用于同步不同的线程运行状态。但不知道为何这样做。为什么还要在QWaitcondition.wai( )中还要传入一个 QMutext 变量的指针。

  • QWaitCondition.wait 的工作原理:
    伪代码

Qmutex mutex;
QwaitCondition cond;
bool statFlag=false;

QmutextLocker lock(&mutex);
While(!statFlag) //A
{
cond.wait(&mutex);{ 解锁mutex //B
其他线程趁此时可以修改statFlag的值
wait()退出是 再锁定 mutex (其他线程不能修改statFlag值)

}
**

}


//C…
这样通过While循环不断的检测statFlag值 确定是否退出该while循环,以便执行 C处代码

  • 这也说明了为何用while 而不用if 来判断 statFlag 来达到阻塞当前线程的目的。如果if :假如其他线程没有修改 statFlag的值,也会导致线程继续执行下去。而不会达到阻塞的目的