1 事件内核对象 2 3 事件类型对象有两种不同类型,手动重置和自动重置 4 手动重置:当一个手动重置对象被触发时候,等待该对象的所有线程变为可调度。 5 自动重置:当一个自动重置对象被触发时,只有一个等待该事件的线程会变为可调度 6 7 下面是一个创建事件内核对象的函数: 8...
分类:
编程语言 时间:
2014-08-16 12:24:20
阅读次数:
229
1 可等待计时器 2 可等待计时器是这样一种内核对象,他们会在某个指定的时间触发或每隔一段时间触发一次。 5 下面我们来介绍一下创建可等待计时器函数: 6 7 HANDLE CreateWaitableTimer( 8 LPSECURITY_ATTR...
分类:
编程语言 时间:
2014-08-16 12:24:00
阅读次数:
226
1 对于内核对象实现线程同步,不得不提三点: 2 1)大多数内核对象既有触发也有未触发两个状态 3 比如:进程、线程、作业、文件流、事件、可等待的计时器、信号量、互斥量 4 2)等待函数:等待函数使线程自愿进入等待状态,直到指定的内核对象变为触发状态为止, 5 说道等待我们最喜欢不过了,...
分类:
编程语言 时间:
2014-08-16 12:23:10
阅读次数:
206
1 /* 2 3 信号量内核对象 4 信号量与其它内核量相同,包含一个使用计数,除此之外还包含两个量。 5 一个最大资源计数和一个当前资源计数。 6 信号量规则如下: 7 如果当前资源计数大于0,那么信号量处于触发状态。 8 如果当前资源计...
分类:
编程语言 时间:
2014-08-16 12:21:40
阅读次数:
214
1 线程同步分为用户模式下的线程同步和内核对象的线程同步。 2 3 当然用户模式下的线程同步实现速度比内核模式下快,但是功能也有局 4 5 6 7 8 //1.利用原子访问: Interlocked系列函数,关于Interlocked系列函数,我需要知道的是他们,执行...
分类:
编程语言 时间:
2014-08-16 12:20:00
阅读次数:
210
Pulse(lockObj)表示释放当前被lock的lockObj,容许其它线程调用。(相当于临时挂起当前线程)Wait(lockObj)表示等待当前被其它线程占用的lockObj。以下的代码将会交替运行两个线程:class TickTock { object lockOn = ...
分类:
编程语言 时间:
2014-08-15 17:39:39
阅读次数:
219
多线程同步,采用WaitForSingleObject和WaitForMultipleObjects()函数出现卡死现象,采用MsgWaitForMultipleObjects代替可以解决此类问题。...
分类:
编程语言 时间:
2014-08-15 14:45:08
阅读次数:
253
互斥锁通信机制
基本原理
互斥锁以排他方式防止共享数据被并发访问,互斥锁是一个二元变量,状态为开(0)和关(1),将某个共享资源与某个互斥锁逻辑上绑定之后,对该资源的访问操作如下:
(1)在访问该资源之前需要首先申请互斥锁,如果锁处于开状态,则申请得到锁并立即上锁(关),防止其他进程访问资源,如果锁处于关,则默认阻塞等待.
(2)只有锁定该互斥锁的进程才能释放该互斥锁.
互斥量类型声...
分类:
编程语言 时间:
2014-08-15 10:47:48
阅读次数:
304
Applications can use event
objects in a number of situations to notify a waiting thread of the occurrence of an event. For example, overlapped
I/O operations on files, named pipes, and communicati...
分类:
编程语言 时间:
2014-08-14 23:59:16
阅读次数:
509