⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hnxxcxg信号量.txt

📁 f your application uses MFC in a shared DLL, and your application is in a language other than the
💻 TXT
字号:
信号量(semaphore)

另一种使线程同步的技术是使用信号量对象。它是在互斥的基础上建立的。但信号量

增加了资源计数的功能,预定数目的线程允许同时进入要同步的代码。用

createSemaphore()来创建一个信号量对象,其声明如下:
function createsemaphore(lpSemaphoreAttributes: pSecurityAttributes; 

lInitalCount, lMaximunCount: longint; lpName: pchar): Thandle; stdcall;
和createmutex()一样,createsemaphore()的第一个参数也是一个指向

TsecurityAttributes记录的指针,此参数的缺少值可以设为nil。lInitialcount参数

用来指定个信号量的初始计数值,这个值必须在0和lMaximumcount之间。此参数大于0

,就表示信号量处于发信号状态。当调用waitforsingleobject()时,此计数值就减1

。当调用releasesemaphore()时,此计数值加1。参数lMaximumcount指定计数值的最

大值。如果这个信号量代表某种资源,那么这个值代表可用资源总数。参数lpName用

于给出信号量对象的名称。类似于createmutex()的lpName参数。

releaseSemaphore()的声明:
function releaseSemaphore(hsemaphore: Thandle; lreleasecount: longint;
lppreviouscount: pointer): bool; stdcall;
ireleasecount参数用于指定每次使计数值加多少。如果参数lppreviouscount不为nil

,原有的计数值将存储在lppreviouscount里。信号量对象并不属于某个线程。

记住,最后一定要调用colsehandle()来释放由createsemaphore()创建的信号量对象

的句柄。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -