【付费教程】Delphi 下基于 QWorker 的多线程编程之一:基础

基于 QWorker 多线程编程由于知识点较多,将分四节课讲解。前两节侧重讲解 QWorker 的教程基本用法,后两节侧重与高级的用法及设计思路剖析。本视频以 Delphi 录制,但由于 Delphi 和 C++ Builder 使用同一 IDE,所以绝大部分内容同样适用于 C++ Builder。 【价格】 以人民币

[QWorker] 制作多线程日志输出查看Demo

要解决的问题: 有多个线程输出日志,日志内容需要在列表框中显示出来,不管日志输出的频率快慢,界面不能卡,不能闪烁。超过10万行日志时,自动删除最开始的1万行日志。 此问题涉及多线程编程,多线程输出时要更新界面的显示。 多线程的东西,当然不能忘了QWorker这样的神器,下面我们就来使用QWorker解决问题,哦,不对,

[教程]基于 QWorker 的多线程编程 – 计划任务

如果前面的各种设置无法满足你的要求,你可能需要的是计划任务。QWorker 支持 Linux 的 Cron 计划任务配置文件格式,可以直接调用 Plan 函数来传递格式字符串到程序中进行任务调度。 与普通的作业不同,计划的作业任务分辨率比较粗,与 Linux Cron 配置文件格式一样精确到分钟。 QWorker 支持

关于线程安全的一些讨论整理

在多线程编程中,多线程访问的数据安全和完整性问题是大家关注的一个焦点,在实际编程中必需小心谨慎的处理,以保证不会破坏性访问数据。 这里有几个基础的几句话,供大家参考: (1)、只读不写,对数据是安全的,读到的数据是完整的。 (2)、单写多读,对数据是安全的,但并不代表你读到的数据是完整的。 (3)、同时多写相同位置的内

临界、多重读独占写多线程同步测试

多重读独占写同步对象适用于读多写少的特定场合,恢弘今天提供了一个第三方的源码(仿照Firebird数据库的源码中的编写的),我写了一个简单的测试程序对其性能试图做个对比。 首先,我们请出参与对比的四位选手: 1、本次的种子选手,FireBird拷贝版多重读独占写对象; 2、Windows操作系统提供的多重读独占写对象;

多线程编程中死锁问题的跟踪与解决

多线程编程中,由于需要同步对象的访问,稍有不慎,就可能造成死锁。而线程死锁的跟踪调试分析是一件很让人纠葛的事情,如何跟踪死锁是一件很让人闹心的事。在Vista/Server2008及以后的版本,Windows提供了OpenThreadWaitChainSession等一系列函数(Wait Chain Traversal

QWorker更新-在Win32平台上枚举作业状态加上堆栈显示

在多线程编程中,死锁是一个绕不过去的话题,一旦发生死锁,要想知道程序死在那儿,为啥死的,是一个艰难的选择。QWorker为用户新提供的EnumWorkerStatus函数,可以轻松的报告每个工作者的状态、正在处理的作业、及工作者处理作业的堆栈调用情况,通过跟踪这些信息,大家可以方便的抓取到每个工作者当前在干什么,从而可

多线程排序的一点思考

多线程排序内部使用快速排序算法,但因为排序时,要对数据进行分区,以便避免由于使用锁而降低排序效率。而数据分区时,我们该如何分,什么时间分是一个需要测试和权衡的问题。 QDAC的QDB的数据排序将使用多线程排序,算法不外乎两种: 1、简单分区再排序 在排序前,先将数据进行分块,保证前一块的的所有值都小于后一块,这样子再次

多线程程序的填坑笔记和多线程编程应该遵循的规则

这几天晚上群里一朋友有偿叫我把他的程序弄稳定,因为是现场管理项目,需要做到无人职守,所以即使是客户端,也不能经常down机,因为之前对他的程序有过一个晚上的实地查看,基本流程已经有个大概的了解,我就接下来了。 刚开始的时候, 程序运行不到一个上午,内存暴涨,有时几个小时就挂了,这个那天晚上发现了,找了半天发现一处加载图

Delphi、C++ Builder多线程程序编码调试的一点经验谈

多线程程序的调试对于程序员来说,是心中永远的痛,调试起来痛苦程序不亚于孕妇难产。本篇文章试图将我自己的一些小经验与大家分享,希望对大家会有所帮助。我在这里为大家列出自己总结的多线程编程的三个注意事项: 一、你的代码不是执行是可能随时被抢断的,所以第一个要注意的就是:多线程程序编写时,永远不要假设代码的执行是连续的。 也

线程正确的退出等待方式

一个线程如果退出时,我们习惯写下如下代码:

但在DLL中调用会在WaitFor的地方出现死等的现象,线程无法退出。 改为下面的代码可以解决:

对于Delphi早期版本,TThread的Fi

多线程排序-QWorker版本实现

当前处理器多核心已经成为标配,无论是手机还是PC,充分利用多核心处理资源,是程序员的职责所在。本次展示的例子,利用QWorker提供的多线程作业管理,演示了如何实现多线程排序。 要进行多线程排序,首先确定数据量是否足够大,太小的数据可能都不够线程创建和切换的开销,那就不如在单一线程中执行效率更高,毕竟线程创建和释放都会