随笔分类 - C++
摘要:并发是现实世界的本质特征,而聪明的计算机科学家用来模拟并发的技术手段便是多任务机制。大致上有这么两种多任务技术,一种是抢占式多任务(preemptive multitasking),它让操作系统来决定何时执行哪个任务。另外一种就是协作式多任务(cooperative multitasking),它把决定权交给任务,让它们在自己认为合适的时候自愿放弃执行。这两种多任务方式各有优缺点,前者固有的同步问题使得程序经常有不可预知的行为,而后者则要求任务具备相当的自律精神。
协程(coroutine)技术是一种程序控制机制,早在上世纪60年代就已提出,用它可以很方便地实现协作式多任务。在主流的程序语言(如C++、Java、Pascal等)里我们很少能看到协程的身影,但是现在不少动态脚本语言(Python、Perl)却都提供了协程或与之相似的机制,其中最突出的便是Lua。
Lua语言实现的协程是一种非对称式(asymmetric)协程,或称半对称式(semi-symmetric)协程,又或干脆就叫半协程(semi-coroutine)。这种协程机制之所以被称为非对称的,
阅读全文
摘要:今天在写静态库时加入了一个静态成员变量,没想到导致了LNK2001:无法解析的外部符号的错误上网一查,原来需要单独定义只要在cpp文件中,定义一下就行了。例如:[代码]怪不得以前没发现这个问题,因为之前的代码我总会随手为静态变量赋初值,看来好习惯还是要坚持啊!
阅读全文
摘要:原文http://bensheaven.spaces.live.com/blog/cns!94250317e32f1536!168.entry C++类库介绍 再次体现了C++保持核心语言的效率同时大力发展应用库的发展趋势!!在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的...
阅读全文
摘要:两种界面库实现技术,也就是获取用于自绘窗口的消息的两种来源:
1、 通过子类化、超类化改变窗口风格。其实就是调用Windows的API SetWindowLong或者通过类的派生和继承来改变Windows窗口的默认的消息处理函数。
2、 使用HOOK技术改变Windows的默认消息处理。
阅读全文
摘要:选择map容器,是为了更快的从关键字查找到相关的对象。与使用list这样的线性表容器相比,一可以简化查找的算法,二可以使任意的关键字做索引,并与目标对象配对,优化查找算法。在C++的STL中map是使用树来做查找算法,这种算法差不多相当与list线性容器的折半查找的效率一样,都是O(log2N),而list就没有map这样易定制和操作了。
相比hash_map,hash_map使用hash表来排列配对,hash表是使用关键字来计算表位置。当这个表的大小合适,并且计算算法合适的情况下,hash表的算法复杂度为O(1)的,但是这是理想的情况下的,如果hash表的关键字计算与表位置存在冲突,那么最坏的复杂度为O(n)。
阅读全文
摘要:这是对目前大部分平台都适用的内存对齐规则的定义 #ifdef HP_UNIX #pragma pack 1 #elif defined(AIX) #pragma options align=packed #elif defined(_WIN32) #pragma pack(push, 1) #else #pragma pack(1) #endif .....数据结构定义 #i...
阅读全文

浙公网安备 33010602011771号