现在位置: 首页 > 多线程编程
2015-11-07 05:07 工业·编程 ⁄ 共 7744字 暂无评论
有时候 会遇到这样的需求:实现多线程的断点续传。今天就我平时的一些实战的经验 来给大家写一个多线程断点续传的例子,希望对大家有所帮助。 一、多线程下载的原理 多线程下载: 多线程下载的基本原理就是由一个完整的文件分成几个不同部分,然后分别由不同的线程去下载这几个部分,把它下载到本地之后,我们将其进行合并,合并完成之后就能得到完整的文件 断点续传: 第一次下载时我们下载这么多,假如遇到了网络状态不太好或...
阅读全文
2015-09-22 11:53 工业·编程 ⁄ 共 327字 暂无评论
    windows中每个运行的程序都是一个进程,每一个进程都会创建一个或多个线程,这些线程称之为软件线程。一个进程至少有一个线程,称为主线程。     硬件线程,也称之为逻辑内核或逻辑处理器,windows将每一个硬件线程识别为一个可调度的逻辑处理器,每一个逻辑处理器可以运行软件线程的代码,windows调度器可以决定将一个软件线程赋给一个硬件线程,通过这种方式均衡每一个硬件线程的工作负载...
阅读全文
2015-08-28 21:09 工业·编程 ⁄ 共 1419字 暂无评论
  做游戏的同学想必对云风很熟悉。这一段时间他开发的skynet和ejoy2d两个软件框架在github上很火。其中skynet是为游戏服务器开发的,可以看成是一个service框架,ejoy2d是一个客户端的代码,内容不多,主要封装了opengl的一些接口,很多人不一定看得上。     我对游戏服务器不熟,但是服务器的相关代码还是看了一些的。之前vsftpd、redis、sshd、mysqld的代码也看过不少,多少知道一点。这次趁周末将skynet...
阅读全文
说“Cannot create children for a parent that is in a different thread”,有时候又是“QSocketNotifier: socket notifiers cannot be enabled from another thread”,还经常又Assert failure:Cannot send events toobjects owned by a different thread,从而导致程序崩溃。     为彻底搞清原因并解决问题,在查阅大量资料和Qt文档之后,理清了其中的机制,也对多线程编程中的QObject对象创建以及connect执行...
阅读全文
在开发一些视频下载软件的界面时,在UI线程之外要创建多个工作线程,比如加载信息,下载视频,要注意一些问题: 1、UI线程创建的相关界面,控件只能UI线程自己调用控制,工作线程不能调用。 比如在文本框内得到视频地址,传到工作线程中,工作线程通过url地址分析出视频的相关信息,再把信息设置到界面中 这时可以把工作线程分析出现的相关信息,通过事件发送给UI线程,UI线程把接收到的信息,自己设置界面控件,就能实现只是UI...
阅读全文
2015-04-10 06:20 工业·编程 ⁄ 共 5418字 评论 1 条
有时候经常需要把串口放到单独的一个线程去处理数据,于是我就把串口封装了一下,即支持了多线程也方便使用。 特性介绍: 1.串口工作是在一个单独的线程,更加稳定 2.实例化的对象可在多个线程被调用且不会出错 注意: 1.一些control开头的信号,是内部通讯用的,请勿直接使用 2.一般来说,只要管accepted和error两个信号就可以了 3.JasonQt_SerialPort_Run这个是工作用的类,不推荐直接使用 4.用到了C++11语法,所以请务必开启...
阅读全文
2015-02-20 22:55 工业·编程 ⁄ 共 19072字 暂无评论
文章目录 一,为什么需要线程池 二,构建线程池框架 三,理解系统组件 CThread: CThreadPool: 附:一份C++线程池的代码,非常实用 调用方法 本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简...
阅读全文
在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。 相反,肯定有一个安全的函数,这个安全的函数又叫可重入函数。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。 一个可重...
阅读全文
2015-02-06 23:06 工业·编程 ⁄ 共 1693字 暂无评论
    QWaitCondition 允许线程在某些情况发生时唤醒另外的线程。一个或多个线程可以阻塞等待一QWaitCondition ,用wakeOne()或wakeAll()设置一个条件。wakeOne()随机唤醒一个,wakeAll()唤醒所有。     下面的例子中,生产者首先必须检查缓冲是否已满(numUsedBytes==BufferSize),如果是,线程停下来等待bufferNotFull条件。如果不是,在缓冲中生产数据,增加numUsedBytes,激活条件 bufferNotEmpty...
阅读全文
2015-01-20 06:39 工业·编程 ⁄ 共 2450字 暂无评论
QThread从QObject派生。它发出信号来表明线程开始了或结束了。并且也提供了几个槽。 更有趣的是,QObject可以在多个程中同时使用,可以发出信号给另外线程的槽,以及向“活在”另外线程中的对象邮寄事件。以上之所以能发生,是因为每个初程都被允许拥有它自己的事件循环。 QObject 重入 QObject是可重入的。它大多数非界面派生类,比如QTimer,QTcpSocket,QFtp,和QProcess,也都是可重入的,使得在多个线程中同时使用这些类成为可...
阅读全文