随笔分类 -  Qt-Thread

摘要:考虑这样一种需求,使用Qt的线程类QThread在后台执行操作(比如说拷贝文件)的时候发生了错误,产生了一个错误信息需要提醒给用户,在后台输出很显然是不够的,因为用户可能根据就没有任何控制台可供程序输出信息。 这是本人自己做得一个仿Win10文件拷贝对话框的一个文件拷贝对话框 该问题纠结到根本是因为 阅读全文
posted @ 2016-08-24 20:11 findumars 阅读(7031) 评论(0) 推荐(0) 编辑
摘要:在我们这批新人转正评审的时候,我师父问了我的小伙伴一个问题:为什么一些更新界面的方法只能在主线程中调用?师父没有问我这个问题,让知其然但不知其所以然的我有种侥幸逃过一难的心情。我想如果回答那是因为Android GUI库是单线程消息机制的,更新界面的操作必须放到主线程中执行,那师父可能继续问为什么A 阅读全文
posted @ 2016-07-22 21:21 findumars 阅读(2436) 评论(0) 推荐(1) 编辑
摘要:Qt中的信号量是由QSemaphore类提供的,信号量可以理解为对互斥量功能的扩展,互斥量只能锁定一次而信号量可以获取多次,它可以用来保护一定数量的同种资源。acquire()函数用于获取n个资源,当没有足够的资源时调用者将被阻塞直到有足够的可用资源。release(n)函数用于释放n个资源。 下面 阅读全文
posted @ 2016-07-22 19:52 findumars 阅读(1570) 评论(0) 推荐(0) 编辑
摘要:QReadWriteLock m_lock; void MyWidget::Button1(){ m_lock.lockForRead(); ShowMessage(tr("111")); m_lock.lockForRead(); ShowMessage(tr("222"));}此时,111和22 阅读全文
posted @ 2016-07-05 00:59 findumars 阅读(1547) 评论(0) 推荐(1) 编辑
摘要:看了不少Qt线程的东西,下面总结一下Qt新建一个线程的方法。 一、继承QThread 继承QThread,这应该是最常用的方法了。我们可以通过重写虚函数void QThread::run ()实现我们自己想做的操作,实现新建线程的目的。前面已经介绍了Qthread,这里就不重复了。 这种方法,我们每 阅读全文
posted @ 2016-07-04 20:08 findumars 阅读(45865) 评论(0) 推荐(2) 编辑
摘要:在写程序中。为了让程序效率高。有时会点用很高的CPU。这里用户体验不好可以设置线程的优先级来搞定。 BOOL SetThreadPriority( HANDLE hThread, // handle to the thread int nPriority // thread priority lev 阅读全文
posted @ 2016-07-02 20:37 findumars 阅读(763) 评论(0) 推荐(0) 编辑
摘要:*免分资源链接点击打开链接http://download.csdn.net/detail/goldenhawking/4492378 很久以前做过ACE + MFC/QT 的中轻量级线程池应用,大概就是利用线程池执行客户机上的运算需求,将结果返回。ACE是跨平台重量级的通信中间件,与常见的应用程序框 阅读全文
posted @ 2016-07-01 23:16 findumars 阅读(6711) 评论(0) 推荐(0) 编辑
摘要:用过go erlang gevent的亲们应该都会知道协程在应用中带来的方便。 如果对协程不理解的同学,通过阅读下面例子可以快速了解我们框架的协程的意义,已了解的可以跳过这部分。 协程例子:假设我们要发个Get请求获取百度首页内容; php同步方式:$result = file_get_conten 阅读全文
posted @ 2016-07-01 05:10 findumars 阅读(1206) 评论(0) 推荐(0) 编辑
摘要:有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响应用户的任何操作,窗口也不会重新绘制,从而处于“无法响应”状态,这是一个非常糟糕的体验 。 在这种情 阅读全文
posted @ 2016-06-22 16:36 findumars 阅读(16172) 评论(0) 推荐(2) 编辑
摘要:非递归上锁情况下,同一个锁,已经被锁过一次,那么另外一个线程尝试上锁,会被挡在外面,但是会被挡多久呢?挡一分钟会被崩溃,还十分钟,还是永久等待而不崩溃(希望如此)?还是会立刻崩溃?因为不可以重复上锁。 enum QReadWriteLock::RecursionMode ConstantValueD 阅读全文
posted @ 2016-06-20 21:45 findumars 阅读(489) 评论(0) 推荐(0) 编辑
摘要:转自:http://xiangjie88.iteye.com/blog/898417 sleep()//秒msleep()//毫秒usleep()//微秒以前为了模拟鼠标点击用过这些函数,可以让进程中断,今天发现我原来的做法其实不对.这组函数会将你当前的线程/进程变为“睡眠”状态。 这个“睡眠”是深 阅读全文
posted @ 2016-06-20 04:56 findumars 阅读(7076) 评论(0) 推荐(0) 编辑
摘要:QMutex类提供的是线程之间的访问顺序化。 QMutex的目的是保护一个对象、数据结构或者代码段,所以同一时间只有一个线程可以访问它。(在Java术语中,它和同步关键字“synchronized”很相似)。例如,这里有一个方法打印给用户两条消息: [cpp] view plain copy voi 阅读全文
posted @ 2016-06-20 04:43 findumars 阅读(3603) 评论(0) 推荐(0) 编辑
摘要:Qt对线程提供了支持,基本形式有独立于平台的线程类、线程安全方式的事件传递和一个全局Qt库互斥量允许你可以从不同的线程调用Qt方法。 这个文档是提供给那些对多线程编程有丰富的知识和经验的听众的。推荐阅读: Threads Primer: A Guide to Multithreaded Progra 阅读全文
posted @ 2016-06-20 04:41 findumars 阅读(10642) 评论(0) 推荐(0) 编辑
摘要:Qt有两种定时器,一种是QObject类的定时器,另一种是QTimer类的定时器。 (1)QObject类的定时器 QObject类提供了一个基本的定时器,通过函数startTimer()来启动,通过killTimer()来结束,通过QTimerEvent来处理定时器事件。 (1)QObject类的 阅读全文
posted @ 2016-06-10 23:15 findumars 阅读(5441) 评论(0) 推荐(0) 编辑
摘要:对生产者和消费者问题的另一个解决办法是使用QWaitCondition,它允许线程在一定条件下唤醒其他线程。其中wakeOne()函数在条件满足时随机唤醒一个等待线程,而wakeAll()函数则在条件满足时唤醒所有等待线程。 下面通过一个典型用例:生产者和消费者,来实现这二者之间的同步。整个工程就一 阅读全文
posted @ 2016-06-02 21:12 findumars 阅读(1298) 评论(0) 推荐(0) 编辑
摘要:主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能 阅读全文
posted @ 2016-04-05 17:36 findumars 阅读(1930) 评论(0) 推荐(0) 编辑
摘要:续上文:http://blog.csdn.net/changsheng230/archive/2010/12/27/6101232.aspx 由于最近工作比较忙,出了趟差,还是把这篇长文、好文翻译出来了,以飨读者。同时也是自己很好的消化、学习过程 Qt 线程类 Qt对线程的支持已经有很多年了(发布于 阅读全文
posted @ 2016-04-05 16:21 findumars 阅读(349) 评论(0) 推荐(0) 编辑
摘要:初次读到这篇文章,译者感觉如沐春风,深刻体会到原文作者是花了很大功夫来写这篇文章的,文章深入浅出,相信仔细读完原文或下面译文的读者一定会有收获。 由于原文很长,原文作者的行文思路是从事件循环逐渐延伸到线程使用的讨论,译者因时间受限,暂发表有关事件循环的译文。另一半线程实用的译文将近期公布。文中有翻译 阅读全文
posted @ 2016-04-05 16:18 findumars 阅读(1259) 评论(0) 推荐(0) 编辑
摘要:QT通过三种形式提供了对线程的支持。它们分别是,一、平台无关的线程类,二、线程安全的事件投递,三、跨线程的信号-槽连接。这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势。多线程编程也是一个有用的模式,它用于解决执行较长时间的操作而不至于用户界面失去响应。在Qt的早期版本中,在构 阅读全文
posted @ 2016-04-04 21:35 findumars 阅读(16215) 评论(0) 推荐(1) 编辑
摘要:Qt线程类 Qt 包含下面一些线程相关的类:QThread 提供了开始一个新线程的方法QThreadStorage 提供逐线程数据存储QMutex 提供相互排斥的锁,或互斥量QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁QReadWriterLock 提供了一个可以同时读 阅读全文
posted @ 2016-04-04 21:26 findumars 阅读(47070) 评论(1) 推荐(1) 编辑