zoukankan
html css js c++ java
线程编程时,需要注意的
当进行线程编程时,需要注意的一些事情:
当使用Qt库互斥量的时候不要做任何阻塞操作。这将会冻结事件循环。
确认你锁定一个递归
QMutex
的次数和解锁的次数一样,不能多也不能少。
在调用除了Qt容器和工具类的任何东西之前锁定Qt应用程序互斥量。
谨防
隐含地共享
类,你应该避免在线程之间使用操作符=()来复制它们。这将会在Qt的未来主要的或次要的发行版本中进行改进。
谨防那些没有被设计为线程安全的Qt类,例如,
QPtrList
的应用程序接口就不是线程安全的并且如果不同的线程需要遍历一个QPtrList,它们应该在调用
QPtrList::first
()之前锁定并且在到达终点之后解锁,而不是在
QPtrList::next
()的前后进行锁定和解锁。
确认只在GUI线程中创建的继承和使用了
QWidget
、
QTimer
和
QSocketNotifier
的对象。在一些平台上,在某个不是GUI线程的线程中创建这样的对象将永远不会接受到底层窗口系统的事件。
和上面很相似,只在GUI线程中使用QNetwork类。一个经常被问到的问题是一个
QSocket
是否可以在多线程中使用。这不是必须得,因为所有的QNetwork类都是异步的。
不要在不是GUI线程的线程中试图调用processEvents()函数。这也包括
QDialog::exec
()、
QPopupMenu::exec
()、
QApplication::processEvents
()和其它一些。
在你的应用程序中,不要把普通的Qt库和支持线程的Qt库混合使用。这也就是说如果你的程序使用了支持线程的Qt库,你就不应该连接普通的Qt库、动态的载入普通Qt库或者动态地连接其它依赖普通Qt库的库或者插件。在一些系统上,这样做会导致Qt库中使用的静态数据变得不可靠了。
查看全文
相关阅读:
《大话数据结构》第1章 数据结构绪论 1.2 你数据结构怎么学的?
伍迷七八月新浪微博集锦
《大话数据结构》第9章 排序 9.7 堆排序(下)
《大话数据结构》第3章 线性表 3.8.2 单链表的删除
《大话数据结构》第9章 排序 9.5 直接插入排序
《大话数据结构》第9章 排序 9.8 归并排序(上)
《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度
《大话数据结构》第1章 数据结构绪论 1.1 开场白
《大话数据结构》第9章 排序 9.1 开场白
[AWS] Assign a public IP address to an EC2 instance after launched
原文地址:https://www.cnblogs.com/lvdongjie/p/5275352.html
最新文章
Java设计模式之(九)——门面模式
Java设计模式之(七)——装饰器模式
Java设计模式之(六)——桥接模式
Java设计模式之(八)——适配器模式
Java设计模式之(十二)——观察者模式
Java设计模式之(十一)——享元模式
Java设计模式之(三)——建造者模式
Java设计模式之(四)——原型模式
Java设计模式之(十)——组合模式
【转】怎样练习一万小时
热门文章
《大话数据结构》第9章 排序 9.6 希尔排序(下)
《大话数据结构》第9章 排序 9.3 冒泡排序(上)
交互设计的学习体会分享
新浪微博产品交互改进之我见
《大话数据结构》第9章 排序 9.3 冒泡排序(下)
《大话数据结构》第9章 排序 9.4 简单选择排序
《大话数据结构》第9章 排序 9.2 排序的基本概念与分类
《大话数据结构》第9章 排序 9.6 希尔排序(上)
《大话数据结构》第2章 算法基础 2.8 函数的渐近增长
《大话数据结构》第9章 排序 9.7 堆排序(上)
Copyright © 2011-2022 走看看