2015-02-21 22:58
⁄ 工业·编程
⁄ 共 2884字
文章目录
log.h
class CLog
在游戏程序中日志显得非常重要,例如在调试AI的时候需要连续跟踪AI状态的变化,在非正常的函数返回点记录状态信息等等。但是这一系列的log如果没有统一管理那么将变得很混乱,而且在多线程的情况下有可能会出现同步问题。为此专门用单件的模式制作了一个日志类,希望能派的上用场。不多说了,直接贴代码,原理很简单,关键地方有注释。
log.h...
日志, 设计模式, 软件开发阅读全文
2015-02-20 22:55
⁄ 工业·编程
⁄ 共 19072字
文章目录
一,为什么需要线程池
二,构建线程池框架
三,理解系统组件
CThread:
CThreadPool:
附:一份C++线程池的代码,非常实用
调用方法
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简...
多线程编程, 线程池阅读全文
2015-02-19 22:54
⁄ 工业·编程
⁄ 共 3619字
在高效C++编程中看到一个不错的内存池实现方案,这里共享下,大家看看有什么不足。
代码很简单,如下:
template<typename T>
class CMemoryPool
{
public:
enum { EXPANSION_SIZE = 32};
CMemoryPool(unsigned int nItemCount = EXPANSION_SIZE)
{
ExpandF...
内存池, 内存管理阅读全文
2015-02-18 22:50
⁄ 工业·编程
⁄ 共 1725字
为了提高new对象的速度,工程师们提出了对象池的解决方案。即一次性分配大量的空间,供开发者创建对象使用;当分配的大量空间不够时,再次分配大量的空间。
嗯,这种方式,在内存池中是没有问题的。但是,由于对象构造时需要执行构造函数,析构时需要执行析构函数,这时就需要一种特殊的方式来解决在已经分配了的空间上执行构造函数。
这,就是placement new。
相关阅读
----一种内存池的实现
示例:
char *...
对象池, 软件开发阅读全文
2015-02-17 22:45
⁄ 工业·编程
⁄ 共 7867字
文章目录
头文件base.h
内存池cpp文件
相对于在栈空间分配内存,堆中分配内存其实是非常缓慢的。
另外,由于堆中分配的内存,需要开发者编码回收,当系统非常庞大时,容易出现分配的内容没有回收导致内存泄露的现象。
因此,许多Bible建议开发者尽量使用栈空间,少用甚至不用malloc和free、new和delete;
虽然栈的空间较小,但这样的建议随着计算机的位数从32位升级到64...
代码集锦, 内存管理阅读全文
2015-02-16 22:35
⁄ 工业·编程
⁄ 共 8586字
检测一个无符号数是不为2^n-1(^为幂): x&(x+1)
将最右侧0位改为1位: x | (x+1)
二进制补码运算公式:
-x = ~x + 1 = ~(x-1)
~x = -x-1
-(~x) = x+1
~(-x) = x-1
x+y = x - ~y - 1 = (x|y)+(x&y)
x-y = x + ~y + 1 = (x|~y)-(~x&y)
x^y = (x|y)-(x&y)
x|y = ...
c++, 位操作, 技巧阅读全文
2015-02-15 22:29
⁄ 工业·编程
⁄ 共 4307字
1. 原始单据与实体之间的关系
可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单据对应多个实体,或多张原始单据对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。
〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、...
技巧, 数据库阅读全文
2015-02-14 22:26
⁄ 工业·编程
⁄ 共 2049字
这些是一些自己在开发过程中与移植程序过程中碰到的linux编程与windows编程的差异之处,以及从网上总结了一些解决办法和经验。
1. 文件与目录的大小写以及路径分隔符的差别。
windows下不区分大小写,路径分隔符一般使用"\";linux下区分大小写,路径分隔符使用"/"。
2. itoa()函数在linux下并不存在。
...
c++, 跨平台, 软件开发阅读全文
2015-02-13 06:30
⁄ 工业·编程
⁄ 共 5713字
第一期:
用hello world简单的代码更容易看懂托盘的具体实现,一些细节问题,比如为什么提示消息没有显示在托盘上,如何在tip消息上增加图标等。
#include <QtGui>
class myclass: public QWidget
{
public:
myclass();
private:
QPushButton *b1;
QSystemTrayIcon *trayIcon;
};
myc...
Qt阅读全文
2015-02-12 06:23
⁄ 工业·编程
⁄ 共 1664字
在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。
相反,肯定有一个安全的函数,这个安全的函数又叫可重入函数。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。
一个可重...
多线程编程, 软件开发阅读全文