操作系统/Windows
Neo_Wu
这个作者很懒,什么都没留下…
展开
-
【Windows核心编程学习笔记】用户模式下的线程同步之二---关键段(critical section)
关键段是一小段代码,它在执行之前需要独占对一些共享资源的访问权。这种方式可以让多行代码以“原子方式”(指的是除了当前线程之外,没有其他任何线程会同时访问该资源)来对资源进行操控。当然,系统仍然可以暂停当前线程去调度其他线程。但是,在当前线程离开关键段之前,系统不会调度任何想要访问统一资源的其他线程的。首先看一段代码:[cpp] view plainc转载 2013-05-03 15:06:56 · 932 阅读 · 0 评论 -
临界区的LockCount为何小于-1
某日,在浙大国家实验室,与老方和小崔调试监控死锁问题。机柜里一溜架装服务器上出现死锁问题。用WinDbg看,发现其中导致死锁的临界区LockCount值是小于-1的数!! 多次重现该问题,发现LockCount经常是负的两三百。我等本着不十分科学严谨,但又有一点科学严谨的态度,装模作样查了下资料,显示如下: LockCount代表什么含义转载 2013-05-14 11:42:23 · 1450 阅读 · 0 评论 -
SendMessage、PostMessage原理
本文讲解SendMessage、PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级、中级、高级程序员进行理解,三个步骤分别为:1、SendMessage、PostMessage的运行机制。2、SendMessage、PostMessage的运行内幕。3、SendMessage、PostMessage的内部实现。注:理解这篇文章之前,必须先了解Windows转载 2013-06-24 18:48:54 · 699 阅读 · 0 评论 -
CreateWaitableTimer与SetWaitableTimer详解
可等待定时器问题:1. 需要的函数:CreateWaitableTimer,SetWaitableTimer.前者创建一个可等待定时器句柄,后者设置等待定时器触发的条件.我们可以多次调用SetWaitableTimer来重置可等待定时器.重置后之前的定时器将关闭.2. 主要看两段代码:代码一:(这段代码在网上出现的概率是较大的)[cpp] view pl转载 2013-07-19 16:14:16 · 2547 阅读 · 0 评论 -
WaitForMultipleObjects使用详解
[c-sharp] view plaincopyDWORD WaitForMultipleObjects( DWORD nCount, // number of handles in the handle array CONST HANDLE *lpHandles, // pointer to the object-ha转载 2013-07-19 16:15:56 · 938 阅读 · 0 评论 -
CreateEvent的用法
多线程编程的关键是线程同步。在windows环境下,实现线程同步分为用户环境下的线程同步和使用内核对象实现线程同步两类。而使用内核对象实现线程同步有多种方法,例如信号量机制、event机制等。本文介绍event机制的使用方法。首先,介绍相关API。函数原型:HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEven转载 2013-07-19 16:19:05 · 1466 阅读 · 0 评论 -
MFC全局函数::AfxBeginThread
函数功能描述:创建新的线程函数原型:CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority =THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRI转载 2013-07-19 16:41:50 · 935 阅读 · 0 评论 -
生活中的PV操作
之前写过操作系统的文章,然后最近发现少了点什么,仔细检查发现,没写PV操作,那么我们接下来就单独为PV操作写一篇博客,让大家不再惧怕PV操作, 我们深入浅出的分析,让大家轻松学习PV操作。学习PV操作之前,我们首先来了解两个很基础的概念:同步、互斥:同步:其实说同步还不如说”协作“,就是我们的目标只有一个,我们奔着同一个目标去的,都是在大家的努力下共同完成这么一件事情。还是转载 2014-03-23 11:40:45 · 882 阅读 · 0 评论