线程同步对象速查表
来源:互联网 发布:部落突击辅助软件 编辑:程序博客网 时间:2024/04/29 09:54
特征
互斥量
关键段
性能
慢
块
是否能跨进程使用
是
否
声明
HANDLE hmtx;
CRITICAL_SECTION cs;
初始化
hmtx = CreateMutex (NULL, FALSE, NULL);
InitializeCriticalSection(&cs);
清理
CloseHandle(hmtx);
DeleteCriticalSection(&cs);
无限等待
WaitForSingleObject (hmtx, INFINITE);
EnterCriticalSection(&cs);
0等待
WaitForSingleObject (hmtx, 0);
TryEnterCriticalSection(&cs);
任意时间长度的等待
WaitForSingleObject (hmtx, dwMilliseconds);
不支持
释放
ReleaseMutex(hmtx);
LeaveCriticalSection(&cs);
是否能同时等待其它
内核对象
是 (使用WaitForMultipleObjects 或类似函数)
否
表1:互斥量和关键段比较
对象
何时处于未触发状态
何时处于触发状态
成功等待的副作用
进程
当进程仍在运行的时候
当进程终止运行时(ExitProcess,
Te rminateProcess)
无
线程
当线程仍在运行时
当线程终止运行时(ExitThread,
TerminateThread)
无
作业
当作业尚未超时的时候
当作业超时的时候
无
文件
当I / O请求正在处理时
当I / O请求处理完毕时
无
控制台输入
不存在任何输入
当存在输入时
无
文件修改通知
没有任何文件被修改
当文件系统发现修改时
重置通知
自动重置事件
ResetEvent , PulseEvent或等待成功
当调用SetEvent / PulseEvent时
重置事件
手动重置事件
ResetEvent或PulseEvent
当调用SetEvent / PulseEvent时
无
自动重置等待计时器
CancelWaitableTimer或等待成功
当时间到时(SetWaitableTimer)
重置定时器
手动重置等待计时器
CancelWaitableTimer
当时间到时(SetWaitableTimer)
无
信号量
等待成功
当数量> 0时(ReleaseSemaphore)
数量递减1
互斥对象
等待成功
当未被线程拥有时(Release互斥对象)
将所有权赋予线程
关键代码段(用户模式)
等待成功((Try)EnterCriticalSection)
当未被线程拥有时(LeaveCriticalSection)
将所有权赋予线程
SRWLock(用户模式)
等待成功的时候
(AcquireSRWLock(Exclusive))
不为线程占用的时候
(ReleaseSRWLock(Exclusive))
把所有权交给线程
条件变量
(用户模式)
等待成功地时候
(SleepConditionVariable*)
被唤醒的时候
(Wake(All)ConditionVariable)
没有
- 线程同步对象速查表
- windows笔记-【内核对象线程同步】线程同步对象速查表
- -【内核对象线程同步】线程同步对象速查表
- 线程同步:事件对象
- 线程的同步对象
- 线程同步对象
- 线程的同步对象
- 线程,线程同步,对象锁,同步方法
- 线程同步(同步对象、同步访问对象)
- 线程同步(同步对象、同步访问对象)
- 线程同步 总结 用户模式同步对象
- 用内核对象同步线程
- 线程: 同步对象的使用
- 线程池之同步对象
- 线程同步对象的区别
- 利用内核对象同步线程
- 线程同步-事件对象(转)
- 线程同步—事件对象
- Hibernate注释大全收藏
- java文件\目录选择
- POJ 1004(小数处理)
- TERMIOS详解
- oracle数据文件被误删除后的灾难处理方法
- 线程同步对象速查表
- 1003_Gold_miner
- 把时间花在进步上,而不是抱怨上
- Embedded_driver_note_2012_8_4
- 连接表
- Java常用代码段
- Java中提升性能对代码作的建议
- 组播IP与组播Mac的对应关系
- .Net的异步机制(委托Delegate) - step 1