qt多线程中怎样锁定一个指定的变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt多线程中怎样锁定一个指定的变量?相关的知识,希望对你有一定的参考价值。

我知道QMutex可以起到锁定的作用,但我的理解是这个只能锁定某一段代码,我想知道假如有一个局部变量QSetting basicIni,有没有一种方法可以锁定这个变量,在锁定期间其他线程无法访问和调用这个变量?类似这样
void read()

lock(basicIni); 锁住该变量
readfile(); 在此期间其他线程无法访问使用该变量
unlock(basicIni); 解锁,可以被其他变量调用

public int _CurrentThread;
//form1_load中的,启动线程的代码在这里。
private void Form1_Load(object sender, EventArgs e)
 
//设置最大线程数
int MaxThread = 5;
//获取需要完成的任务列表
OleDbConnection AccessConn = AccessModule.Conn("D:\\\\Flying Co\\\\flying.mdb");
string sql = "select * from ty_task where bay_flag=" + false + " order by bay_id asc";
OleDbCommand comm = new OleDbCommand(sql, AccessConn);
OleDbDataReader list = comm.ExecuteReader();
while (list.Read())

追问

这个不是qt吧,莫非qt中的解决方法和这个类似,但没看出来线程锁在哪

参考技术A 在对象上包装一层,每当要对这个对象存取的时候就加锁追问

抱歉没看明白,包装一层是指把存取操作封装为一个函数,在函数里面加QMutex吗?

本回答被提问者采纳

Qt多线程调用gdal库接口

作者:朱金灿
来源:clever101的专栏

为什么大多数人学不会人工智能编程?>>>

效果图和程序说明

  效果图如下:

  这个程序是Qt的GUI程序,用于给指定的图像文件创建金字塔。

为什么要使用多线程

  使用多线程的好处主要有两点:
1.多线程在很多时候显得更人性化些。比如界面更新使用一个线程,后台算法使用另一个线程。这样后台算法线程和界面线程就互不影响。
2.现在的机器一般都带多核处理器,使用多线程正好能够充分利用硬件资源。

如何在Qt中使用多线程

  下面以创建影像金字塔为例说明如何在Qt使用多线程中调用gdal库接口。首先考虑的是如何规划线程:一般来说就是主线程也就是UI线程负责更新进度条,算法进程负责处理数据。
1.从QThread类中派生一个类CreatePyramidThread,用于实现创建图像金字塔。主要代码如下:

以上是关于qt多线程中怎样锁定一个指定的变量?的主要内容,如果未能解决你的问题,请参考以下文章

QT多线程问题:子线程中的变量如何传递给主线程?

qt多线程的问题

python哪些容器线程安全

c# 多线程互斥问题。。

Linux Qt使用POSIX多线程条件变量互斥锁(量)

QT环境下,<POSIX多线程>全局变量共享问题