54、QMutex:互斥量---------多线程、竟态条件和同步

张开发
2026/4/16 11:44:52 15 分钟阅读

分享文章

54、QMutex:互斥量---------多线程、竟态条件和同步
QMutex互斥量基本用法QMutex类提供了互斥锁功能用于保护共享资源。典型用法如下1创建一个QMutex对象。2在访问共享资源前调用lock()方法锁定互斥量。3访问或修改共享资源。4调用unlock()方法解锁互斥量。QMutex mutex; // 线程A执行加锁 mutex.lock(); // 访问共享资源 // 访问结束后解锁 mutex.unlock();案例实战通过QMutex我们修改之前有问题的案例因为我们之前是两个线程并行计算所以要用统一的一个QMutex锁管理全局变量, 最终达到的效果是精准计算后界面显示20万解决思路我们在global.h中声明一个全局的互斥量#include QMutex extern int global_num; //全局的互斥量 extern QMutex global_mtx;在global.cpp中定义它QMutex global_mtx;然后在任务计算global_mutex的时候我们加锁//线程开始后执行的任务 void ThreadWorker::slot_work() { _run true; int index 0; while(_run index 100000){ //加锁 global_mtx.lock(); //对全局变量累加1 global_num 1; //解锁 global_mtx.unlock(); index; } //发送数字变化信号 emit sig_num_changed(global_num); //发送完成信号 emit sig_finished(); }再次运行就能看到显示的数字是20万了准确数字提问同学们如果我将global_mtx.lock()

更多文章