随笔分类 - c++
摘要:用了三种方法,第一种使用高精度性能计数器;第二种是使用多媒体定时器,另一种是《Windows图形编程》里提供的CPU周期来获取。推荐第一种方式测量:先看第一种:[cpp]view plaincopy#include#includevoidmain(){LARGE_INTEGERlitmp;LONGL...
阅读全文
摘要:带下划线_的函数一般是函数库内部的函数,而不带下划线的一般是提供给用户使用的函数。带下划线的目的是为了防止用户定义的函数和函数库的函数重名冲突,所以直接使用也是可以的。要用getch()必须引入头文件conio.h _T这类似的是宏定义转换,转换成函数参数相符合的类型,如果没有,编译器一般可以自动转...
阅读全文
摘要:gcc和g++都是GNU(组织)的一个编译器。 误区一:gcc只能编译c代码,g++只能编译c++代码 两者都可以,但是请注意: 1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求...
阅读全文
摘要:陈大师的文章,核心就是利用__sync_bool_compare_and_swap来尝试无锁操作,在组里的svr状态统计的代码看里看到类似用法。可以有效的避免用锁,但是感觉有死循环的风险,所以一般__sync_bool_compare_and_swap只尝试有限次数比较合适。对__sync_bool...
阅读全文
摘要:在多核的硬件结构中,如果要充分发挥硬件的性能,必须采用多线程(或多进程)执行,以提高CPU的利用率。多核系统的编程模型和多个CPU的SMP系统的编程模型是一致的,都属于共享存储的编程模型;同时,多核环境中也可以使用的分布式编程模型。目前,多核并行编程方法可以分为以下四类:基于Raw Thread A...
阅读全文
摘要:状态模式定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。实用性:1、 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2、 一个操作中含有庞大的多分支条件语句,且这些分支依赖于该对象的状态。优点:1、 将与特定状态相关的行为局部化,并且将不同状态...
阅读全文
摘要:[cpp]view plaincopystaticconstcharS_FILL[]="cycle_queue_fill_";staticconstcharS_EMPTY[]="cycle_queue_empty_";templateclassCycleQueueT{private:CycleQue...
阅读全文
摘要:对无锁队列的最初兴趣来自梁斌同志的一个英雄帖:http://coderpk.com/。第一次看到这个题目的时候还不知道CAS,FAA等所谓的“原子操作”,但直觉上感觉,通过对读写操作的性能优化来达到大幅提高队列性能的方法是行不通的,就算读写操作全用汇编来写,也不会和正常的read及write有数量级...
阅读全文
摘要:一哥们翻译的boost的无锁队列的官方文档原文地址:http://blog.csdn.net/great3779/article/details/8765103Boost_1_53_0终于迎来了久违的Boost.Lockfree模块,本着学习的心态,将其翻译如下。(原文地址:http://www.b...
阅读全文
摘要:利用boost来获取当前时间又方便快捷,还不用考虑跨平台的问题。1. 输出YYYYMMDD[cpp]view plaincopy#include#defineBOOST_DATE_TIME_SOURCEstd::stringstrTime=boost::gregorian::to_iso_strin...
阅读全文
摘要:问题是在更新嵌入的清单文件时发生的,由于FAT32的原因而未能更新嵌入的清单文件,于是我们有如下两种解决方法:(1)不启用增量链接。在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此方法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默认的根据时戳而决定...
阅读全文
摘要:初始化临界区(win)InitializeCriticalSection(RTL_CRITICAL_SECTION &rtl_critial_section) (linux)pthread_mutexattr_init(&(mutex)->attr);pthread_mutexattr_sett...
阅读全文
摘要:/*Andyisgoingtoholdaconcertwhilethetimeisnotdecided.EricisafansofAndywhodoesn'twanttomissthisconcert.Andydoesn'tknowEric.HowcanEricgetsthenewswhenAndy...
阅读全文
摘要:1) 观察者模式定义略,各种设计模式的书上都有定义。2) 观察者模式一般实现观察者模式一般实现,都是“被观察者”保存一个“观察者”的列表,循环这个列表来通知“观察者”。代码,其中使用了boost的智能指针shared_ptr:[cpp]view plaincopy#include#include#i...
阅读全文
摘要:CRC16是单片机程序中常用的一种校验算法。依据所采用多项式的不同,得到的结果也不相同。常用的多项式有CRC-16/IBM和CRC-16/CCITT等。本文代码采用的多项式为CRC-16/IBM: X16+X15+X2+1。闲言少叙,下面是查表法计算CRC16的代码:/***************...
阅读全文
摘要:(1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。 WIN32 Api都采用_stdcall调用方式,这样的宏定义说明了问题: #define WINAPI _stdcall 按C编译方式,_stdcal...
阅读全文
摘要:Notepad++ 16进制编辑功能Notepad++可以编辑PE文件(二进制文件即HEX码),2进制、16进制都可以,通过附加的组件HexEditor即可实现。另外一款Notepad++自带插件TextFX也有这个功能,但实现效果不如Hex Editor。Hex Editor实现Notepad++...
阅读全文
摘要:如何实现C++模板类头文件和实现文件分离,这个问题和编译器有关。引用>里的观点:1)标准C++为编译模板代码定义了两种模型:“包含”模型和“分别编译”模型。2)所有编译器都支持“包含”模型,某些编译器支持“分别编译”模型。问题的提出:(帖子在:http://topic.csdn.net/u/2010...
阅读全文