Windows Programming
文章平均质量分 88
walker沃克
http://walkerdu.com
展开
-
Windows进程同步之事件内核对象(Event)
在所有的内核对象中,事件内核对象比其他的简单的多,可以用事件内核对象对不同进程进行同步。事件内核对象主要包括三个部分:使用计数,一个表示是自动还是手动重置事件的布尔值,一个表示是否有信号的布尔值。使用计数:和其他内核对象一样,用来标识使用该事件对象的不同线程个数。表示自动或手动重置事件的布尔值:当一个事件是自动重置事件,事件被触发后,只有一个等待的线程会变成可调度状态(根据系统的调度策原创 2013-06-14 12:52:18 · 6589 阅读 · 1 评论 -
Windows线程同步之临界区对象(Critical Section)
我们也可以通过临界区保证在同一时间内只有一个线程对共享数据进行控制访问。临界区不是内核对象,只能对进程内部的线程进行同步。临界区对象是定义在数据段中的一个CRITICAL_SECTION结构,Windows内部使用这个结构记录的一些信息,来确保同一个时间只有一个线程访问该临界区保护的数据。临界区对象使用要调用的函数接口如下:(1)InitializeCriticalSection(原创 2013-06-19 22:57:20 · 4623 阅读 · 5 评论 -
Windows进程同步之互斥量内核对象(Mutex)
我们知道进程间的同步操作都是要借助内核来完成的,和同一个进程中的线程同步只需要在用户模式下是有很大差别的,当然,对于进程安全的,对于线程肯定也是安全的,但在用户模式下的线程同步所需消耗的代价相对于通过内核完成的同步是很小的。所以不要利用进程同步的方式来进行同一进程中线程的同步。这里先讨论进程同步的方式之一:互斥量(Mutex)。互斥量内核对象能够确保一个进程独占对一个资源的访问。互斥量与关原创 2013-06-12 21:58:08 · 8387 阅读 · 1 评论 -
Windows线程同步之互锁函数(Interlocked)
Windows下进程内部的各个线程之间的同步不需要借助内核对象,Windows提供的默认在用户模式下的线程同步工具。互锁函数为多线程同步访问共享变量提供了一个简单的机制。如果变量在共享内存,不同进程的线程也可以使用此机制。互锁函数对共享变量的操作是原子的,这个原子性体现在保证多线程在同一个时刻只能有一个线程获得对该同步变量的操作权限。(1)InterlockedExchangeAdd(原创 2013-06-19 22:27:10 · 2303 阅读 · 0 评论 -
Windows线程同步之Slim读写锁(SRWLock)
Slim读写锁简称SRWLock,它的目的和临界区相同,对一个资源进行保护,不让其他线程访问。但是不同的是SRWLock允许我们区分哪些线程是读取共享资源的值,哪些线程是修改共享资源的值。所有读线程在同一时刻可以访问共享资源,因为这些线程不会破坏共享资源,只有当写线程要访问共享资源时,才需要进行同步。写线程应当独占式访问资源,其他任何线程都不允许访问资源。这就是SRWLock提供的全部功能。所原创 2013-06-19 23:28:52 · 5751 阅读 · 0 评论 -
Windows进程同步之信号量内核对象(Semaphore)
信号量内核对象主要包括三个部分:使用计数,最大资源计数,当前资源计数。使用计数:和其他内核对象一样,用来标识使用该事件对象的不同线程个数;最大资源计数:表示信号量控制的最大资源的数目;当前资源计数:表示信号量当前可用的资源数目;信号量使用规则如下:如果当前资源计数大于0,信号量处于触发状态; 如果当前资源计数等于0,那么信号量处于未触发状态;系统绝不会使当前资源计数变为负数原创 2013-06-19 01:28:37 · 9559 阅读 · 2 评论 -
Linux和Windows下文件和目录的相关属性及操作
我们知道C/C++都提供了标准的文件I/O库以便我们对文件进行读写。但我们无法通过标准的I/O库对文件系统进行更进一步的操作。因为这设计到具体操作系统中文件系统的设计。在Linux和Windows程序库下面都有一个sys目录,里面包含系统相关的头文件,如下:Windows下:C:\Program Files\Microsoft Visual Studio 9.0\VC\include\sy原创 2013-11-30 17:52:35 · 10341 阅读 · 1 评论