quark

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年3月19日

摘要: Segment类Segment成员变量 long long m_index;记录该segment的索引号。 int* volatile m_state;状态数组,标识所对应的元素节点的状态,默认值为0,如果该元素节点添加了值,则标记为1。 T* volatile m_array;队列元素存储空间的指针。 Segment* volatile m_next;指向下一个segment的指针。 volatile long m_high;标识在当前segment,元素最后添加的索引值,初始值为-1,如果该segment被填满了,则该值为SEGMENT_SIZE – 1。 volatile long m_ 阅读全文
posted @ 2012-03-19 16:40 QuarkZ 阅读(3741) 评论(1) 推荐(1) 编辑

摘要: ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。ConcurrentQueue<T>数据结构下图是ConcurrentQueue<T>数据结构的示意图:ConcurrentQueue<T>队列由若干Segment动态构成,每个Segment是一块连续的内存Buffer,大小固定为SEGMENT_SIZE。ConcurrentQueue<T>私有成员变量ConcurrentQueue<T& 阅读全文
posted @ 2012-03-19 14:09 QuarkZ 阅读(44430) 评论(3) 推荐(3) 编辑

2012年2月22日

摘要: 最近,在编写自己呃数独游戏过程中,遇到需要生成一些随机但连续的数字序列的需求。当时,为了尽快实现功能,临时写了一个凑合着用。现在有时间,写一个通用的,生成随机但连续数的序列的函数,当然原理很简单。// generate a random number list length of which is size;// the range of numbers is 0 to size-1;bool CreateRandomSequenceNumbers(int size, int* randomSequence){ if ( size <= 0 || (randomSequence == N 阅读全文
posted @ 2012-02-22 15:48 QuarkZ 阅读(547) 评论(0) 推荐(0) 编辑

2011年11月30日

摘要: 我有如下三行代码: int a = 8; int ret = a/2; ret = a >> 1;现在讨论上面两种实现除以2方式的性能,我们有如下伪汇编代码: int a = 8;013B143E mov dword ptr [a],8 \\ 将8赋值为变量a int ret = a/2;013B1445 mov eax,dword ptr [a] \\ 将a的值赋值给eax013B1448 cdq \\ 双字转换为4 字(把EAX 中的字的符号扩展到EDX 中去)013B1449 sub eax,edx ... 阅读全文
posted @ 2011-11-30 11:12 QuarkZ 阅读(2762) 评论(8) 推荐(0) 编辑

2011年10月12日

摘要: .NET下的很多技术都是基于反射机制来实现的,反射让.NET平台下的语言变得得心应手。最简单的,比如枚举类型,我们我可以很容易的获得一个枚举变量的数值以及其名称字符串。可是,在C++中,枚举变量本质上和一个整形变量没有区别,我们很难获取一个枚举变量的名称字符串。其实在C++中,我们可以通过宏来实现类似反射的机制。接下来,我想总结一下如何在C++中实现一个类似于C#枚举类型的方法。 __VA_ARGS__使用__VA_ARGS__,我们可以定义带可变参数的宏,举个例子:#define MY_PRINTF(…) printf(__VA_ARGS__)这样我们写MY_PRINTF("hel 阅读全文
posted @ 2011-10-12 10:34 QuarkZ 阅读(15347) 评论(6) 推荐(1) 编辑

2011年9月1日

摘要: 查询计算机上安装了哪些版本的.NET Framework检查以下注册表项的子项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP;使用.NET Framework提供的CLRVer.exe工具查询;32位Windows应用程序能在64位Windows上运行的原因Windows的64位版本提供了一个名为WoW64(Windows on Windows64)的技术,WoW64能模拟x86指令集。CTS,CLR,CLI,CLSCommon Type System,通用类型系统Common Language Runtime,公共 阅读全文
posted @ 2011-09-01 11:15 QuarkZ 阅读(222) 评论(0) 推荐(0) 编辑

2011年8月29日

摘要: 对于如下简单的代码: static void ILDiscoveryListDelete() { List<int> list = new List<int> { 1,2,3,4, }; foreach (var item in list) { list.Remove(item); } }在执行的时候会跑出如下异常:为什么会这样子呢,我们知道,foreach语句在... 阅读全文
posted @ 2011-08-29 12:58 QuarkZ 阅读(849) 评论(6) 推荐(0) 编辑

2011年8月19日

摘要: 时常搞不清楚这两者之间的区别,因此决定在这儿写下来。Object.Equals(object obj1, object obj2)方法表示所比较的两个对象的值是否相等。结果取决于obj1.Equals(obj2)方法的返回结果。Object.ReferenceEquals(object obj1, object obj2)方法表示所比较的两个参数是否引用的同一个对象。 阅读全文
posted @ 2011-08-19 15:04 QuarkZ 阅读(389) 评论(0) 推荐(0) 编辑

2011年8月15日

摘要: 这个问题曾经在教科书上见到过,没想到自己居然遇到了。前几天到客户那去维护程序,出现了大致如下的一段CPP代码。 int resultValue =0; if (some condition) { /* other codes */ int resultValue = /* some value */ } else { /* other codes */ int resultValue = /* some value */ } /* use resultValue */当时代码一跑... 阅读全文
posted @ 2011-08-15 13:26 QuarkZ 阅读(177) 评论(0) 推荐(0) 编辑

2011年7月21日

摘要: 最近在工作当做遇到一个问题,需要统计一段代码执行时间,但是手头上却没有一个好用的计算时间间隔的东西。于是,自己山寨了一把.NET下的StopWatch类,写了一个C++下的DNetStopWatch类。类图如下:代码逻辑几乎完全按照StopWatch类来实现的。以下是一段测试代码: DNetStopWatch sw; sw.Start(); Sleep(1000); sw.Stop(); sw.Start(); Sleep(3000); sw.Stop(); printf("Elapsed Ticks: %lld,\tElapsedMilliseconds: %lld",s 阅读全文
posted @ 2011-07-21 16:27 QuarkZ 阅读(253) 评论(0) 推荐(0) 编辑