下载此文档

Qt多线程编程.doc


文档分类:IT计算机 | 页数:约21页 举报非法文档有奖
1/21
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/21 下载此文档
文档列表 文档介绍
24 }
24 }
24 }
24 }
Qt 线程类
Qt 包含下面一些线程相关的类:
QThread 提供了开始一个新线程的方法
QThreadStorage 提供逐线程数据存储
QMu3
mutex. lock ();
4
5
int retVal = 0 ;
6
7
switch (flag) {
8
case 0 :
9
case 1 :
10
();
11
return moreComplexFunction(flag);
12
case 2 :
13
{
14
int status = anotherFunction()
15
if (status < 0 ) {
16
();
17
return - 2 ;
18
}
19
retVal = status + flag;
20
}
21
break ;
22
default :
23
if (flag > 10 ) {
24
();
25
return - 1 ;
26
}
27
break ;
28
}
29
();
return retVal;
}
This example increases the likelihood that errors will QMutexLocker greatly simplifies the code, and makes it more readable:
1
int
complexFunction( int
flag)
2
{
3
QMutexLocker locker( & mutex);
4
5
int retVal = 0
)
6
7
switch (flag) {
8
case 0 :
9
case 1 :
10
return moreComplexFunction(flag);
11
case 2 :
12
{
13
int status
= anotherFunction()
14
if (status
< 0 )
15
return
- 2 ;
16
retVal =
status + flag;
17
}
18
break ;
19
default :
20
if (flag >
10 )
21
return -
1 ;
22
break ;
23
}
24
25
return retVal;
26
}
Now, the mutex will always be unlocked when the QMutexLocker object is destroyed (when the function returns since locker is an auto variable) . 即使在抛出异常的情况下也可以使用。
QReadWriteLock
用 mutex 进行线程同步有一个问题就是 mutex 只允许某个时刻只允许一个线程对共享资 源进行访问, 如果同时有多个线程对共享资源进行读访问, 而只有一个写操作线程, 那么在 这种情况下如果采用 mutex 就成为程序运行性能的瓶颈了。在这种情况下 Qt 下采用
29
QReadWriteLock 来实现多个线程读,一个线程写。写线程执行的时候会阻塞所有的读线程, 而读线程之间的运行不需要进行同步。
MyData data;
QReadWriteLock lock ;
void ReaderThread::run()
{
5
lock .lockForRead();
access_data_without_modifying_it( & data);
lock .unlock();
9
}
void WriterThread::run()
{
13
lock .lockForWrite();
modify_data( & data);
lock .unlock();
17
18 }

Qt多线程编程 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数21
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小s
  • 文件大小350 KB
  • 时间2022-04-17