用内核对象进行线程同步1
来源:互联网 发布:pl sql块包括哪几部分 编辑:程序博客网 时间:2024/05/22 03:14
1、进程内核对象在创建的时候总是处于未触发状态。当进程终止时系统会自动使进程内核对象变成触发状态。
2、线程内核对象也遵循上面的规则。
3、等待函数使一个线程自愿进入等待状态,直到指定的内核对象被触发为止。常用的为WaitForSingleObject。
4、WaitForMultipleObjects允许调用线程同时检查多个内核对象的触发状态。
WaitForMultipleObjects能够以原子方式执行所有操作,如果你希望,它可以返回触发它的线程是某一个
或某几个。
5、事件内核对象包含一个使用计数,一个用来表示事件是自动重置事件还是手动重置事件的布尔值,另一个用
来表示事件有没有触发的布尔值。
6、事件的触发表示一个操作已经完成。有两种不同类型的事件对象:手动重置事件和自动重置事件。当一个手动重置事件
被触发的时候,正在等待该事件的所有线程都将变成可调度状态。而当一个自动重置事件被触发的时候,只有一个
正在等待该事件的线程会变成可调度状态。
7、事件最通常的用途是,让一个线程执行初始化工作,然后再触发一个线程,让它执行剩余的工作。一开始我们将事件初始化
为未触发的状态,然后当线程完成初始化工作的时候,触发事件。此时,另一个线程一直在等待该事件,它发现事件被触发,
于是变成可调度状态。第二个线程知道第一个线程完成了它的工作。
8、CreateEvent(PSECURITY_ATTRIBUTES psa,BOOL bManualReset,BOOL bInitialState,PCTSTR pszName);
用来创建一个事件内核对象。bManualReset是指是否为手工重置事件,bInitialState事件是否初始化为触发状态。
返回一个事件内核对象句柄,与当前的进程相关联。
9、SetEvent把事件变为触发状态,ResetEvent把事件变为未触发状态。
10、创建可等待的计时器,HANDLE CreateWaitableTimer(PSECURITY_ATTRIBUTES psa,BOOL bManualReset,PCTSTR pszName);
得到一个可等待的计时器的句柄,HANDLE OpenWaitableTimer(DWORD dwDesiredAccess,BOOL bInheritHandle,PCTSTR pszName);
bManualReset是手动重置还是自动重置,手动时,正地等待的所有计时器都会变成可调度;自动时,只有一个等待的变为可调度的。
11、创建的计时器总是处于未触发状态,可通过SetWaitableTimer来触发。SetWaitableTimer传入的是全球标准时间。
CancelWaitableTimer计时器取消
12、Windows开发人员可能会比较可等待计时器和用户计时器(通过SetTimer函数来设置),两者最大的区别在于用户计时器需要在
应用程序中使用大量的用户界面基础设施,从而消耗更多的资源。可等待计时器是内核对象,
这意味着它们不仅可以在多线程间共享,可以具备安全性。
2、线程内核对象也遵循上面的规则。
3、等待函数使一个线程自愿进入等待状态,直到指定的内核对象被触发为止。常用的为WaitForSingleObject。
4、WaitForMultipleObjects允许调用线程同时检查多个内核对象的触发状态。
WaitForMultipleObjects能够以原子方式执行所有操作,如果你希望,它可以返回触发它的线程是某一个
或某几个。
5、事件内核对象包含一个使用计数,一个用来表示事件是自动重置事件还是手动重置事件的布尔值,另一个用
来表示事件有没有触发的布尔值。
6、事件的触发表示一个操作已经完成。有两种不同类型的事件对象:手动重置事件和自动重置事件。当一个手动重置事件
被触发的时候,正在等待该事件的所有线程都将变成可调度状态。而当一个自动重置事件被触发的时候,只有一个
正在等待该事件的线程会变成可调度状态。
7、事件最通常的用途是,让一个线程执行初始化工作,然后再触发一个线程,让它执行剩余的工作。一开始我们将事件初始化
为未触发的状态,然后当线程完成初始化工作的时候,触发事件。此时,另一个线程一直在等待该事件,它发现事件被触发,
于是变成可调度状态。第二个线程知道第一个线程完成了它的工作。
8、CreateEvent(PSECURITY_ATTRIBUTES psa,BOOL bManualReset,BOOL bInitialState,PCTSTR pszName);
用来创建一个事件内核对象。bManualReset是指是否为手工重置事件,bInitialState事件是否初始化为触发状态。
返回一个事件内核对象句柄,与当前的进程相关联。
9、SetEvent把事件变为触发状态,ResetEvent把事件变为未触发状态。
10、创建可等待的计时器,HANDLE CreateWaitableTimer(PSECURITY_ATTRIBUTES psa,BOOL bManualReset,PCTSTR pszName);
得到一个可等待的计时器的句柄,HANDLE OpenWaitableTimer(DWORD dwDesiredAccess,BOOL bInheritHandle,PCTSTR pszName);
bManualReset是手动重置还是自动重置,手动时,正地等待的所有计时器都会变成可调度;自动时,只有一个等待的变为可调度的。
11、创建的计时器总是处于未触发状态,可通过SetWaitableTimer来触发。SetWaitableTimer传入的是全球标准时间。
CancelWaitableTimer计时器取消
12、Windows开发人员可能会比较可等待计时器和用户计时器(通过SetTimer函数来设置),两者最大的区别在于用户计时器需要在
应用程序中使用大量的用户界面基础设施,从而消耗更多的资源。可等待计时器是内核对象,
这意味着它们不仅可以在多线程间共享,可以具备安全性。
- 用内核对象进行线程同步1
- windows 用内核对象进行线程同步
- 用内核对象进行线程同步
- 用内核对象进行线程同步
- Windows核心编程:用内核对象进行线程同步
- 第九章:用内核对象进行线程同步
- 第九章:用内核对象进行线程同步(一)
- 第九章:用内核对象进行线程同步(二) .
- Windows核心编程 用内核对象进行线程同步
- windows核心编程-9.用内核对象进行线程同步
- windows核心编程-用内核对象进行线程同步
- windows核心编程---用内核对象进行线程同步
- 用内核对象同步线程
- 用内核对象进行线程同步——事件内核对象
- 用内核对象进行线程同步——互斥量内核对象
- 用内核对象进行线程同步——信号量内核对象
- 进程与线程(五)用内核对象进行线程同步(上)
- 进程与线程(六)用内核对象进行线程同步(下)
- Linux并发服务器代码实现
- 网页UI设计思想
- bzoj2441
- 又有人要离开
- ADB server didn't ACK问题
- 用内核对象进行线程同步1
- 网页经典代码和CSS样式大全
- 正则表达式总结
- windows系统下Apache+php的配置
- uart-verilog HDL
- Java 访问mysql的blob,对图片进行存取
- Java编程中“为了性能”尽量要做到的一些地方
- OPENCV资料总结
- jQuery 鼠标拖动