Lv.的博客
上一页 1 ··· 124 125 126 127 128 129 130 131 132 ··· 190 下一页
摘要: 一. move关于 lvaue 和 rvalue,在 c++11 以前存在一个有趣的现象:T& 指向 lvalue (左传引用), const T& 既可以指向 lvalue 也可以指向 rvalue。但却没有一种引用类型,可以限制为只指向 rvalue。这乍看起来好像也不是很大的问题,但其实不是这... 阅读全文
posted @ 2015-05-09 13:23 Avatarx 阅读(451) 评论(0) 推荐(0)
摘要: 在C++中,decltype作为操作符,用于查询表达式的数据类型。decltype在C++11标准制定时引入,主要是为泛型编程而设计,以解决泛型编程中,由于有些类型由模板参数决定,而难以(甚至不可能)表示之的问题。泛型编程在整个1990年代越发流行,对实现类型推导机制的需求也应运而生。为此,许多编译... 阅读全文
posted @ 2015-05-09 12:53 Avatarx 阅读(355) 评论(0) 推荐(0)
摘要: 线程状态在一个线程的生存期内,可以在多种状态之间转换。不同操作系统可以实现不同的线程模型,定义许多不同的线程状态,每个状态还可以包含多个子状态。但大体说来,如下几种状态是通用的: 就绪:参与调度,等待被执行。一旦被调度选中,立即开始执行。 运行:占用CPU,正在运行中。 休眠:暂不参与调度,等待特定... 阅读全文
posted @ 2015-05-09 10:13 Avatarx 阅读(3115) 评论(0) 推荐(1)
摘要: 陈大师的文章,核心就是利用__sync_bool_compare_and_swap来尝试无锁操作,在组里的svr状态统计的代码看里看到类似用法。可以有效的避免用锁,但是感觉有死循环的风险,所以一般__sync_bool_compare_and_swap只尝试有限次数比较合适。对__sync_bool... 阅读全文
posted @ 2015-05-08 16:18 Avatarx 阅读(1230) 评论(0) 推荐(1)
摘要: 前几篇文章,我们讨论了如何使用mutex保护数据及使用使用condition variable在多线程中进行同步。然而,使用mutex将会导致一下问题:等待互斥锁会消耗宝贵的时间 — 有时候是很多时间。这种延迟会损害系统的scalability。尤其是在现在可用的core越多越多的情况下。低优先级的... 阅读全文
posted @ 2015-05-08 16:00 Avatarx 阅读(1823) 评论(0) 推荐(1)
摘要: 什么是句柄:句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础... 阅读全文
posted @ 2015-05-08 15:52 Avatarx 阅读(721) 评论(0) 推荐(0)
摘要: #include#include//#include//#include#defineUM_MSG1(WM_USER+1)#defineUM_MSG2(WM_USER+2)DWORDWINAPIThread1(LPVOIDpara){DWORDdwThreadId=*(DWORD*)para;DWO... 阅读全文
posted @ 2015-05-08 15:46 Avatarx 阅读(463) 评论(0) 推荐(0)
摘要: 内核对象的基本概念Windows系统是非开源的,它提供给我们的接口是用户模式的,即User-Mode API。当我们调用某个API时,需要从用户模式切换到内核模式的I/O System Services API。例如我们调用Kernel32.dll中的CreateFile创建文件,最终将执行ntdl... 阅读全文
posted @ 2015-05-08 15:37 Avatarx 阅读(471) 评论(0) 推荐(0)
摘要: Win32线程控制只有是围绕线程这一内核对象的创建、挂起、恢复、终结以及通信等操作,这些操作都依赖于Win32操作系统提供的一组API和具体编译器的C运行时库函数。本篇围绕这些操作接口介绍在Windows系统下的多线程编程要点,后续将进一步涉及多线程通信的同步互斥等议题。1.线程的创建(Create... 阅读全文
posted @ 2015-05-08 15:35 Avatarx 阅读(1514) 评论(0) 推荐(0)
摘要: 一.线程间数据通信系统从进程的地址空间中分配内存给线程栈使用。新线程与创建它的线程在相同的进程上下文中运行。因此,新线程可以访问进程内核对象的所有句柄、进程中的所有内存以及同一个进程中其他所有线程的栈。这样一来,同一个进程中的多个线程可以很容易的相互通信。到目前为止,将数据从一个线程传到另一个线程的... 阅读全文
posted @ 2015-05-08 15:33 Avatarx 阅读(425) 评论(0) 推荐(0)
上一页 1 ··· 124 125 126 127 128 129 130 131 132 ··· 190 下一页