Mutex的lock(), unlock(), tryLock()函数介绍
来源:互联网 发布:ppt在线直播php源码 编辑:程序博客网 时间:2024/05/21 14:43
lock函数和tryLock函数都是用于锁定对象,但他们之间有一定的区别:
lock函数是阻塞的,因为它调用WaitForSingleObject函数时传递的第二个参数是INFINITE,表示无限等待下去,所以是阻塞的。
tryLock函数时非阻塞的,调用后立即返回。因为它调用WaitForSingleObject函数时传递的第二个参数是0,表示不等待,立即返回。
调用lock或者tryLock后,都需要调用unlock来解锁。status_t Mutex::lock(){ DWORD dwWaitResult; dwWaitResult = WaitForSingleObject((HANDLE) mState, INFINITE); return dwWaitResult != WAIT_OBJECT_0 ? -1 : NO_ERROR;}void Mutex::unlock(){ if (!ReleaseMutex((HANDLE) mState)) LOG(LOG_WARN, "thread", "WARNING: bad result from unlocking mutex\n");}status_t Mutex::tryLock(){ DWORD dwWaitResult; dwWaitResult = WaitForSingleObject((HANDLE) mState, 0); if (dwWaitResult != WAIT_OBJECT_0 && dwWaitResult != WAIT_TIMEOUT) LOG(LOG_WARN, "thread", "WARNING: bad result from try-locking mutex\n"); return (dwWaitResult == WAIT_OBJECT_0) ? 0 : -1;}
WaitForSingleObject函数的用法如下:
DWORD WaitForSingleObject(
HANDLE hObject, //指明一个内核对象的句柄
DWORD dwMilliseconds); //等待时间
该函数需要传递一个内核对象句柄,该句柄标识一个内核对象,如果该内核对象处于未通知状态,则该函数导致线程进入阻塞状态;如果该内核对象处于已通知状态,则该函数立即返回WAIT_OBJECT_0。第二个参数指明了需要等待的时间(毫秒),可以传递INFINITE指明要无限期等待下去,如果第二个参数为0,那么函数就测试同步对象的状态并立即返回。如果等待超时,该函数返回WAIT_TIMEOUT。如果该函数失败,返回WAIT_FAILED。
- Mutex的lock(), unlock(), tryLock()函数介绍
- Mutex的lock(), unlock(), tryLock()函数介绍
- Mutex的lock(), tryLock()区别
- Mutex的lock(), tryLock()区别
- Lock的tryLock()方法
- Lock的tryLock()方法
- 多线程系列——Mutex的两个基本操作lock和unlock的实现
- FileChannel tryLock/lock method
- 互斥量trylock与lock
- lock tryLock lockInterruptibly
- Lock,tryLock,lockInterruptibly区别
- lock tryLock lockinterruptibly 区别
- lock(),tryLock(),lockInterruptibly()区别
- java中的Lock和tryLock方法的详解
- jdk源码解读-并发包-Lock-ReentrantReadWriteLock(1)-整体介绍以及读锁的lock 和 unlock 解析
- MySQL的LOCK TABLES/UNLOCK TABLES
- ReentrantLock的lock-unlock流程详解
- 生产订单的 lock 与 unlock
- 《大话数据结构》--学习笔记9 ***重点***
- java 定时器2
- java Decorator设计模式 Decorator设计模式
- 【转】Linux下虚拟网卡(tap)安装方法
- Linux下,如何明确地查看操作系统的位数
- Mutex的lock(), unlock(), tryLock()函数介绍
- mysql插入表中的中文字符显示为乱码或问号的解决方法
- FBS:欧元区风险因素加剧,欧元扩大跌幅
- ubuntu 9.10安装 pppoe server
- 百度笔试题:负数在前 正数在后(奇数在前,偶数在后)
- 12款很棒的浏览器兼容性测试工具推荐
- private与static的方法是不是默认为final的测试
- 【转】使用debootstrap做一个属于自己的系统(zh)
- 关于自身表的外键触发器实现