摘要: 轻量级的读写锁(Slim Reader-Writer locks):读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可 阅读全文
posted @ 2017-10-19 18:39 gd_沐辰 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 事件:事件Event实际上是个内核对。事件类似于前面的信号量,一个事件有两种状态:激发状态和未激发状态。也称有信号状态和无信号状态。事件又分两种类型:手动重置事件和自动重置事件。手动重置事件被设置为激发状态后,会唤醒所有等待的线程,而且一直保持为激发状态,直到程序重新把它设置为未激发状态。自动重置事 阅读全文
posted @ 2017-10-19 18:37 gd_沐辰 阅读(1824) 评论(0) 推荐(0) 编辑
摘要: 信号量(Semaphore):有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。 比如:以 阅读全文
posted @ 2017-10-19 18:34 gd_沐辰 阅读(3330) 评论(0) 推荐(1) 编辑
摘要: #include<Windows.h> LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){ switch(msg) { case WM_CREATE: /*MessageBox(hWnd,TEXT("窗口 阅读全文
posted @ 2017-09-03 21:37 gd_沐辰 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 所在目录:当前程序运行的目录。比如:在VS调试程序时,所在目录就是源文件所在的目录。在debug直接运行.exe是,所在目录就是debug所在的目录。 GetCurrentDirectory();获取所在目录。 函数原型:DWORDGetCurrentDirectory( DWORD nBuffer 阅读全文
posted @ 2017-06-20 20:10 gd_沐辰 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 实例十八:去n的第一个出现的1 方法:result=n & (n-1) 与实例十七 思路类似。实例十七是不断取1,本例只去最低位。 解释:n 0000 1111n-1 0000 1110& 0000 1110 可见把最低位1去掉了 当然,也可以不断循环,把全部1换为0. 代码: int _tmain 阅读全文
posted @ 2017-03-28 17:48 gd_沐辰 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 实例十七:n的二进制中有几个1 方法:result=n & (n-1) n&(n-1)的目的使最低位的1不断翻转。 比如:n=108,其二进制表示为0110 1100,则n&(n-1)的结果为0110 1000.因此只要不停地翻转n的二进制的最低位的1,每一次翻转让计数器+1,直到n等于0时,计数器 阅读全文
posted @ 2017-03-28 17:47 gd_沐辰 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 实例十五:十进制转成二进制 方法一:result = (n >> (31 - i)) & 1 原数依次从高位到低位,和数值'1'进行与操作,并不断输出结果。 方法二:result=a & (1 << i) 依次把数值‘1’从低位到高位,和原数进行与操作,并不断输出结果。 解释: 十进制数值在计算机中 阅读全文
posted @ 2017-03-28 17:46 gd_沐辰 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 实例十四:数值交换 显然,实现数值交换的方法有很多,在此列举三种进行对比: 方法一:利用第三变量进行交换 定义:a,b,temp { temp=a b=a b=temp } 方法二:不利用第三变量 a,b { a=a+b b=a-b a=a-b } 方法三:利用位操作符,逻辑与方法二类似 a,b { 阅读全文
posted @ 2017-03-28 17:44 gd_沐辰 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 实例十三:左循环移位 方法:result=n<<k|n>>(32-k) (1) b:将n的左端的k位先放到b中的低位中。 b=n>>(32-k); (2) c:将n左移k位,起右边低位k位补0。 c=n<<k; (3)将b和c进行或操作. 解释:原数 1011 1100右移k位 0000 0010 阅读全文
posted @ 2017-03-28 16:51 gd_沐辰 阅读(413) 评论(0) 推荐(0) 编辑