多线程程序的调试对于程序员来说,是心中永远的痛,调试起来痛苦程序不亚于孕妇难产。本篇文章试图将我自己的一些小经验与大家分享,希望对大家会有所帮助。我在这里为大家列出自己总结的多线程编程的三个注意事项: 一、你的代码不是执行是可能随时被抢断的,所以第一个要注意的就是:多线程程序编写时,永远不要假设代码的执行是连续的。 也
月度归档: 2014 年 8 月
DIOCP3-数据库DEMO
socket-Coder\DataModuleDEMO\ 本DEMO演示数据库的简单使用,其他功能需要自己扩展。 将工程的输出路径设置到socket-Coder\DataModuleDEMO\BIN下面 服务端使用的Access数据库 可以改连接使用其他数据库 DataModuleDEMO\
DIOCP3-DIOCP1升级到DIOCP3
DIOCP3兼容DIOCP1的,有些属性做了修改 DIOCP3, uIOCPConsole没有了, uMemPool没有了 1.DIOCP1,代码: DIOCP3中去掉TIOCPContextFactory, 可以直接往TIocpConsole(uIocpCentre单元中)对象上注册。TiocpCons
QMsgPack-Delphi/C++ Builder下MessagePack协议的高效实现
首先,关于MessagePack协议,访问http://msgpack.org可以了解详细的格式约定及各种语言的实现。 其次,MessagePack协议号称比JSON快,但速度的快慢这个东西受各个实现的限制,有的实现的Json比MessagePack的实现要更快一些,所以不要盲目的就随便拿一个MessagePack实现
DIOCP3-关于TIOCPConsole
TIOCPConsole是继承至TIocpTcpServer,做了管理和调用编码和解码器器的功能。可以通过向他注册编码和解码器可以忽略粘包的问题。 这样如果TIOCPConsole客户端必须按照一定的编码器和解码器的协议发送数据和接受数据, diocpCoders中已经有了几种编码和解码器, 比较常用的T
DIOCP3-粘包处理
什么是粘包: 第一次发送 12345, 第二次发送abcde, 底层socket可能会一次性进行发送12345abcde,或者对方可能一次性进行了接收,那接收的时候,你可能想分两次接收才对,第一次接受到12345, 第二次想接收abcde,但是事与愿违,一次就接收完了,这就是粘包的
DIOCP3 – 关于接收数据
DIOCP3支持两种方式接收数据, 第一种是原始的流数据, 最通用的一种方式,客户端发啥,这边就收到啥。需要自己处理粘包问题。 可以在TCilentContext或者TIocpTcpServer的OnRecvBuffer中处理, 如果Errcode = 0可以进行收到数据的处理 下面这两个都会触发 TIo
DIOCP3专题-基于完成IO端口的高性能服务器端解决方案
本贴为主题索引贴,方便大家浏览和了解DIOCP3相关的信息: DIOCP3 – 关于接收数据 DIOCP3-粘包处理 DIOCP3-关于TIOCPConsole DIOCP3-DIOCP1升级到DIOCP3 DIOCP官方QQ群:320641073
QWorker专题-基于作业的Delphi/C++ Builder并行编程框架
QWorker是QDAC组件库中的一个重要组成部分,目标是降低在Delphi和C++Builder多线程编程的复杂度。QWorker首先是从作业的角度来规划多线程编程,通过将要完成的目标任务分解成一个个作业,从而达到简化编程模型,提高系统运行效率的目的。 【概念入门】 QWorker – Delphi编写的
QJSON专题-Delphi/C++ Builder的快速JSON解析单元
QJSON – Delphi下快速的JSON解决方案 【转】封三郎-Delphi用QJSON解析JSON格式的数据 QJSON中编码函数Encode的特别说明 QJson/QMsgPack RTTI 注意事项 示例-向QJson实例中添加子结点的方法小结 示例-QJson中结点的查找与遍历方法小结 QJSON vs l
YxdJson高性能JSON处理库简介
【简介】 YXDJson 采用 QJSON编解码内核,提供类似FastJson的对外使用接口,秉承QJson跨平台高性能的特性,支持D2007,XE6,支持Windows, Android等平台。YXDJson除了提供了QJson拥有的所有功能外,还支持DataSet高速序列化与反序列化。YXDJson还增加了Pars
Delphi条件编译时编译器的版本号
更早的版本忽略,我们从2006开始记录,相应的版本号判断方式: VER180 : Delphi 10.0 CodeGear 2006/2007VER185 : Delphi 11.0 CodeGear 2007 VER190 : Delphi 12.0 CodeGear 2008 VER200 : Delphi 13.
Delphi中NativeInt/NativeUInt引入版本
今天在DIOCP群中,有群友(蜕 变)指出NativeInt和NativeUInt是在Delphi 2009开始引入的,在32位平台,可以分别对应于Integer和Cardinal,64位平台分别对应于Int64和UInt64,特此标记下。
JSON内容查看器,基于QJson设计
一个简单的工具,用来查看JSON的内容以供分析,源码位于QDAC的Demo\Delphi\VCL\JsonView目录下,可以自行编译,也可以下载。 【下载地址】 百度网盘
QJSON vs lkJson vs SuperObject 速度大PK
测试环境:RadStudio XE6 Update 1 【注意】本测试结果仅对当时测试的版本负责,不代表后续版本结果。
QJSON中编码函数Encode的特别说明
QJson.Encode是用于将当前JSON对象的内容格式化为字符串的函数,AsString/toString/AsJson函数实际低层都调用了它,而在网络传输时,我们实际上并不需要换行等空白字符,此时,手动调用Encode时将第一个ADoFormat参数设置为False。另外,部分控件或软件可能要求中文等特殊字符必需
XP更改计算机类型
因为需要将虚拟机里的XP添加虚拟CPU,而原来的单核类型明显不对,因此,百度后发现只需要执行一条命令就可以了: rundll32.exe setupapi,InstallHinfSection ACPIAPIC_MP_HAL 131 %windir%\inf\hal.inf 最终效果:
QWorker更新
QWorker更新以解决由于FBusyCount引入的问题(链接:https://blog.qdac.cc/?p=127),另外,FBusyCount改名为FFirstIdle,以代表其始终指向下一个空闲的工作者。
DIOCP开源项目-高效稳定的服务端解决方案(DIOCP + 无锁队列 + ZeroMQ + QWorkers) 出炉了
[概述] 自从上次发布了[DIOCP开源项目-利用队列+0MQ+多进程逻辑处理,搭建稳定,高效,分布式的服务端]文章后,得到了很多朋友的支持和肯定。这加大了我的开发动力,经过几个晚上的熬夜,终于在昨天晚上,DEMO基本成型,今天再加入了QWorkers来做逻辑处理进程,进一步使得逻辑处理进程更加方便和高效。今天特意写篇
YxdWorker 后台工作者管理库(由QWorker变异)
说明 ——————————————————————