【目录】 Delphi、C++ Builder多线程程序编码调试的一点经验谈 多线程程序的填坑笔记和多线程编程应该遵循的规则(天地弦) 多线程编程中死锁问题的跟踪与解决 临界、多重读独占写多线程同步测试 关于线程安全的一些讨论整理
月度归档: 2014 年 10 月
专题-走进01之路教程
本专题内容需要密码才能访问,本身是写给我儿子的计算机入门教程。其它人如需访问,请加官方群索取密码。 【目录】 01-前言 02-我们的世界 03-排排坐,吃果果 04-程序和计算机的启动过程 05-怎么去写程序 06-C/C++语言的基础语法 07-了解我们的编程环境 08-我们的第一个小程序
如何判断网络的最大传送单元大小?
网络通讯中,为了提高通讯效率,我们要求网络传输过程中,尽量减少分包的情况下使用最大的传输尺寸,但从我们的计算机到目标之间,要经过多个路由器,我们该怎么让程序自动检测这些值呢? PMTU协议就是这么一种协议,我在这里简单介绍下具体的步骤: 1、创建一个RAW类型的Socket,推荐用ICMP或UDP协议,推荐ICMP协议
[Windows]如何判断指定的IP是否能访问?
一般我们判断是否能够访问指定的IP地址时,一般都是采用PING或者尝试连接到指定的TCP端口的方式,在上面的基础上,实际上通过尽快的排除明显不可能访问的目标,来加快测试的速度。 下面的C++代码提供给大家,方便的判断是否能够路由到指定的目标: /*判断是否能够路由到指定的IP Parameters ARemote :
示例-使用QWorker从百度天气并行获取天气数据
今天新增了一个使用WeatherFetch的例子,简单的演示了如何使用TQJobGroup和TQForJobs来并行从百度天气获取数据。本文为您略加解读相关代码,以便让大家更易于理解这一示例。这个例子主要演示了: 1、QWorker 中使用 TQJobGroup 定制顺序执行作业流程。 2、QWorker 中 TQFo
QWorker更新-修正了TQJobGroup和TQForJobs存在的两个Bug
【问题描述】 1、TQJobGroup未考虑先添加再Prepare+Run的情况,造成重复投寄已经添加的作业,从而引发无效的指针操作错误,重现方式: AGroup:=TQJobGroup.Create(False); for I:=0 to 1 do AGroup.Add(DoTestProc,nil); AGroup
QScript语法构想(0.13版)
QScript做为一门规划中的解释性语言,我并不希望其是现有语言的直接翻版,因此,重新设计规划其语法。因为是解释性语言,要方便解释器解析识别。 注意本文只是一个构想,并不代表最终一定会实现。 1、变量定义 QScript中变量定义设想声明形式是和C++类似,随用随声明,而不是像Delphi一样,需要在前面声明。如for
多线程编程中死锁问题的跟踪与解决
多线程编程中,由于需要同步对象的访问,稍有不慎,就可能造成死锁。而线程死锁的跟踪调试分析是一件很让人纠葛的事情,如何跟踪死锁是一件很让人闹心的事。在Vista/Server2008及以后的版本,Windows提供了OpenThreadWaitChainSession等一系列函数(Wait Chain Traversal
QMapSymbols和QRBTree单元更新
【更新内容】 QMapSymbols加入对导入函数地址解析的支持,QRBTree中的TQHashTable加入了两个事件,分别是AfterBucketUsed对应于一个空桶变成使用中事件,AfterBucketEmpty对应一个使用中的桶变成空的事件。对于TQHashTable的更新,目的是提供一个通知,方便上层维护做
获取动态链接库在进程中的加载地址
我们知道,Windows下DLL被加载到进程中时,可能发生地址冲突而被重定位,那么我们如何获取这些进程的重定位地址呢?实际上很简单,通过GetModuleHandle函数可以获取到已经被加载到内存中的DLL映像的句柄,这个句柄的值就是DLL被加载的映像基准地址。要列举出所有的模块映像加载地址,用EnumProcessM
QWorker更新-修正了五毒和宣言报告的3个Bug
【问题描述】 1、TQJobGroup.Count属性无效,该属性定义成了直接读取成员FCount的值,但实际上未使用(五毒报告)。 2、TQJobGroup.Add添加顺序执行作业时,如果该分组的FPrepareCount等于0,实际作业不会被执行到(五毒报告)。 3、TSystemTimes定义在XE3开始就已经存