基于 QWorker 的多线程编程 – 状态机:信号与广播

前面我们讨论了定时作业(Post/Delay/At)和直接用 Post 来触发作业,也就是说,作业触发和执行之间是紧密耦合的。作业的触发者知道作业的响应者在那儿,要干什么,但如果我们要将作业的触发与执行分离,该怎么做呢?信号!QWorker 提供了信号机制来解决这一问题。 QWorker 中信号的作用就在于建立触发者和

[教程]基于 QWorker 的多线程编程专题

离线版不定期更新,下载地址:百度网盘 1、引言 2、不同的作业视角 3、第一个作业 4、传递参数给作业 5、后台线程与用户界面交互 6、清理现场 7、线程定时器 8、状态机-信号与广播 9、作业分组 10、使用分组作为业务处理队列 11、工作流控制 12、For 并行 13、状态跟踪 14、同步与锁定 15、附加选项

基于 QWorker 的多线程编程 – 线程定时器

在实际编程环境中,我们常需要定时执行一项任务,比如每隔1小时,执行一次同步操作,而这些操作如果放到主线程中使用普通的 TTimer 执行,由于需要占用主线程的资源,可能会造成程序明显的卡顿。这时候,我们就需要使用后台定时器来完成这一操作(当然 QWorker 也支持主线程中的定时作业,此时就相当于你在窗口上放置了一个T

基于 QWorker 的多线程编程 – 清理现场

有人雇佣了一些工人干活,但不幸的是,这个人在所有作业完成前,消失在那蓝色星球中的人海找不到了,于是,悲剧的工人在找他要工钱时,发现已经无法找到人了,于是工人暴怒,进行疯狂的破坏,结果就是异常发生了。为了避免工人的暴动,雇主应该在消失之前,清理作业,与工人进行结算,这样才能建设和谐社会嘛。 QWorker 中的作业在提交

基于 QWorker 的多线程编程 – 后台线程与用户界面交互

我们知道,后台作业不能直接访问和操作用户界面元素。实际上,所谓的直接访问并不是绝对的,但属性这个东西你读时,可能执行的是一个读函数,它是否内部进行了一些不安全的写操作,有时候是叫不准的,那么,显然不在后台作业中访问更安全。 那么,我们如果需要和前面的用户界面交互该怎么做? 在进一步讨论之前,我们首先要明白和主线程进行交

基于 QWorker 的多线程编程 – 同步与锁定

凡是多线程编程,几乎就离不开同步和锁定这个话题。在深入探讨之前,首先我们了解下同步和锁定是怎么回事: 同步是为了在多线程中串行化对公共资源的访问而采取的一种策略,相关的对象在 Delphi 中在 syncobjs 和sysutils 单元。一般来说,多线程读取在整个应用程序生存周期内,始终保持不变的公共资源是安全,就象

基于 QWorker 的多线程编程 – 传递参数给作业

在上一节中,我们看到这个示例实在是太简单了,实际在作业处理过程中,稍微复杂一点的作业,我们都需要传递参数给作业的处理函数。那么怎么传递参数给作业呢? 在 Post 函数的声明中,我们看到有一个 AData 参数,是一个无类型的指针,我们实际上就是通过它来作业传递参数。我们知道,无类型指针实际上是一个整数来记录地址的值,

基于 QWorker 的多线程编程-不同的作业视角

前一章我们说了,QWorker 是基于作业的视角来考虑的,所以,这一章,我们试图从不同的视角来解读下作业的分类,古语说“横看成岭侧成峰,远近高低各不同”,我们也横七竖八的切分下看看。 1、从作业的运行线程环境来分 我们知道,许多东西如窗体上的控件,都不是线程安全的,如果我们在后台线程中直接访问它,会发生意想不到的错误。

基于 QWorker 的多线程编程-引言

QWorker 是 QDAC 项目带给大家的一套多线程并行编程框架。它基于作业的视角来规划作业多线程编程,简化多线程编程的步骤和方法和交互手法。 首先,我们要明白我们为什么需要多线程并行编程? 我们之所以使用多线程编程,一般目的不外乎下面两个: 1、避免程序界面假死带来的恶劣用户体验。 2、充分利用现代计算机的处理资源

[Radxa Rock]使用USB接口

Radxa Rock 支持 USB 宿主和 USB otg(可以用来做为设备或主机). Android USB 宿主 USB宿主支持U盘、鼠标和键盘等等。即插即用。U盘或USB硬盘自动挂载。你可以用固件自带的ES管理器查看内容。到ES中的Local Storage打开它。 USB otg RR上的OTG端口, 你可以将

[Radxa Rock]如何刷机到SD卡

为rock准备的映像 SD 映像是可以启动并完全运行在uSD卡上的。当你想尝试不同的操作系统或新版本的固件而不想使用Nand闪存时是不错的选择。 下载 检查你的 硬件版本 (Pro 或 Full/Lite), 然后从 这里 下载 “for SD card”  映像。 将SD映像写入到SD卡 Wi

[Radxa Rock]如何刷机到NAND闪存

这个页面描述怎么往Radxa Rock的NAND flash上装系统,即大家喜闻乐见的刷机. 你可以选择完全刷机(就是刷 update.img格式的固件)或者只刷特定的某个 分区. 你可以从radxa网站download下载radxa(android, lubuntu, 双启动固件)或者第三方 编译好的固件 或者制作你

[Radxa Rock]上手指南

这个文档是我翻译自官方的文档,原文是英文,且网站访问速度很慢,所以翻译顺便更新过来,顺便将常见问题与解答也复制过来了。 需要的附件 一个radxa rock包装包含以下项目: 一个radxa rock主反 一个USB直流电源连线 一个Wifi天线 可选的一个全透明的盒子以更好的保护主板 你需要以下额外的基本设备来使RR

专题-走进01之路教程

本专题内容需要密码才能访问,本身是写给我儿子的计算机入门教程。其它人如需访问,请加官方群索取密码。 【目录】 01-前言 02-我们的世界 03-排排坐,吃果果 04-程序和计算机的启动过程 05-怎么去写程序 06-C/C++语言的基础语法 07-了解我们的编程环境 08-我们的第一个小程序