# thread.semaphore 库模块帮助文档

## thread 成员列表 <a id="thread" href="#thread">&#x23;</a>

### thread.semaphore <a id="thread.semaphore" href="#thread.semaphore">&#x23;</a>
创建或打开信号量对象,  
返回对象可传入其他线程使用。

信号量可用于进程或线程间同步

### thread.semaphore("信号量对象名称",10) <a id="thread.semaphore" href="#thread.semaphore">&#x23;</a>
创建信号量同步对象,可以跨进程使用,  
省略名称创建匿名对象,  
参数@2指定最大资源计数,  
可选参数@3指定初始空闲计数，默认等于最大资源计数,  
参数2,参数3仅在首次创建该事件对象是起作用

### thread.semaphore() <a id="thread.semaphore" href="#thread.semaphore">&#x23;</a>
[返回对象:threadSemaphoreObject](#threadSemaphoreObject)

### thread.semaphore(信号量句柄) <a id="thread.semaphore" href="#thread.semaphore">&#x23;</a>
使用句柄直接打开信号量

### thread.semaphore(信号量句柄,true) <a id="thread.semaphore" href="#thread.semaphore">&#x23;</a>
使用句柄直接打开信号量  
添加析构函数负责释放句柄

## threadSemaphoreObject 成员列表 <a id="threadSemaphoreObject" href="#threadSemaphoreObject">&#x23;</a>

### threadSemaphoreObject.close() <a id="threadSemaphoreObject.close" href="#threadSemaphoreObject.close">&#x23;</a>
关闭信号量对象  
该函数并不关闭信号量内核对象  
当所有引用内核对象的对象关闭,内核对象自动释放

### threadSemaphoreObject.conflict <a id="threadSemaphoreObject.conflict" href="#threadSemaphoreObject.conflict">&#x23;</a>
如果信号量对象已存在,此属性为真值  
否则为空值

### threadSemaphoreObject.release() <a id="threadSemaphoreObject.release" href="#threadSemaphoreObject.release">&#x23;</a>
线程在处理完共享资源后,  
应在离开时调用此函数将可用资源计数加1  
可在参数中指定要释放的资源计数(默认为1)  
第一个返回值表示函数执行是否成功,  
第二个返回值为原来的资源计数

### threadSemaphoreObject.wait() <a id="threadSemaphoreObject.wait" href="#threadSemaphoreObject.wait">&#x23;</a>
等待可用资源计数大于0,  
可选增加一个参数指定超时,以毫秒为单位  
注意此函数应与release()函数配对使用  
在UI线程中应使用非阻塞的waitOne()函数替代

### threadSemaphoreObject.waitOne() <a id="threadSemaphoreObject.waitOne" href="#threadSemaphoreObject.waitOne">&#x23;</a>
等待可用资源计数大于0,  
可选增加一个参数指定超时,以毫秒为单位  
注意此函数应与release()函数配对使用
