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

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

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

DIOCP3-关于TIOCPConsole

TIOCPConsole是继承至TIocpTcpServer,做了管理和调用编码和解码器器的功能。可以通过向他注册编码和解码器可以忽略粘包的问题。   这样如果TIOCPConsole客户端必须按照一定的编码器和解码器的协议发送数据和接受数据, diocpCoders中已经有了几种编码和解码器, 比较常用的T

DIOCP3-粘包处理

什么是粘包:    第一次发送  12345, 第二次发送abcde, 底层socket可能会一次性进行发送12345abcde,或者对方可能一次性进行了接收,那接收的时候,你可能想分两次接收才对,第一次接受到12345, 第二次想接收abcde,但是事与愿违,一次就接收完了,这就是粘包的

DIOCP3 – 关于接收数据

DIOCP3支持两种方式接收数据,   第一种是原始的流数据, 最通用的一种方式,客户端发啥,这边就收到啥。需要自己处理粘包问题。 可以在TCilentContext或者TIocpTcpServer的OnRecvBuffer中处理, 如果Errcode = 0可以进行收到数据的处理 下面这两个都会触发 TIo

QWorker专题-基于作业的Delphi/C++ Builder并行编程框架

QWorker是QDAC组件库中的一个重要组成部分,目标是降低在Delphi和C++Builder多线程编程的复杂度。QWorker首先是从作业的角度来规划多线程编程,通过将要完成的目标任务分解成一个个作业,从而达到简化编程模型,提高系统运行效率的目的。 【概念入门】 QWorker – Delphi编写的

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来做逻辑处理进程,进一步使得逻辑处理进程更加方便和高效。今天特意写篇