windows核心对象semaphore合适增加和减少

转载 2012年03月27日 14:28:40

转自:http://www.ibm.com/developerworks/cn/java/l-threadPool/

在开发软件的过程中,多线程的程序往往需要实现相互通讯,比如几个线程添加一个消息到队列里,而另一个线程在睡眠时,就需要唤醒那个线程来处理事情。在这其中,就需要使用到信号量来进行同步。CreateSemaphore是创建信号量,ReleaseSemaphore是增加信号量。
Semaphore是另一个同步问题机制,不论是Event或Mutex,其他Process在执WaitForSingleObject时,就看当时的物件是Signal或UnSignal而决定是否等待,而Semaphore也相同,但是它要变成Signal /UnSignal的状态,却有些不同,它是提供一个计数值,它允许在这个计数值之内,任何执行到WaitForSingleObject的Thread都不会停下来,而且每执行WaitForSingleObject一次,计数值就减一当计数值变成0时,该Semaphore才会处於UnSignal的状态,而某个Thread ReleaseSemaphore时,便会将计数值增加,以便其他的Thread或本身可得Signal的讯号,而使WaitForSingleObject停止等待。


 

管道、邮槽和Socket的比较

消息管道(Message Pipe)用于设置应用程序间的一条永久通讯通道,通过该通道可以象自己的应用程序访问一个平面文件一样读写数据。匿名管道(Anonymous Pipes)单向流动,并且只能够在同...

OCI 连接池测试

#include "stdafx.h" #include "ocilib.h" #include #include #include #include #include #inclu...

windows核心编程-信号量(semaphore)

线程同步的方式主要有:临界区、互斥区、事件、信号量四种方式。 前边讲过了互斥器线程同步-----windows核心编程-互斥器(Mutexes),这章我来介绍一下信号量(semaphore)线程同步。...

windows核心编程-信号量(semaphore)

转载自:http://blog.csdn.net/windows_nt/article/details/9456643 线程同步的方式主要有:临界区、互斥区、事件、信号量四种方式。 前边讲...

Windows进程同步之信号量内核对象(Semaphore)

信号量内核对象主要包括三个部分:使用计数,最大资源计数,当前资源计数。 使用计数:和其他内核对象一样,用来标识使用该事件对象的不同线程个数;最大资源计数:表示信号量控制的最大资源的数目;当前资源...

《windows核心编程系列》三谈谈内核对象及句柄的本质

2012、8、29 http://blog.csdn.net/ithzhang/article/details/7920204转载请注明出处!                         ...
  • ithzhang
  • ithzhang
  • 2012年08月29日 14:45
  • 10297

windows核心编程之内核对象

由于不是计算机科班出身,一直对于进程和线程没有深入的了解,现开始看windows核心编程,将具体内容整理一下,以加深印象。   1、内核对象,即操作系统维护的一个数据结构,内部维护该对象的各种数据信息...

windows核心编程-互斥量的内核对象

互斥量(mutex)内核对象用来确保一个线程独占对一个资源的访问。互斥量对象包含一个使用计数、线程ID 以及一个递归计数。互斥量与关键段的行为完全相同。但是,互斥量是内核对象,而关键段是用户模式下的...

(摘自windows核心编程之用内核对象进行线程同步)

内核对象即可处于触发状态,也可以处于未触发状态: 对于线程同步来说,这些内核对象要么处于触发(signaled),要么处于未触发(nonsignaled) ...

windows核心编程-用内核对象进行线程同步

前言:     在用户模式下进行线程同步的最大好处就是速度非常快。与用户模式下的同步机制相比,内核对象的用途要广泛的多,内核对象唯一的缺点就是它们的性能。调用本章介绍的任何一个新函数时,调用线程...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows核心对象semaphore合适增加和减少
举报原因:
原因补充:

(最多只允许输入30个字)