线程调度

来源:互联网 发布:完美红颜魂器进阶数据 编辑:程序博客网 时间:2024/05/17 06:10
1、创建一个被挂起的线程装CreateThread函数标志位传入CREATE_SUSPENDED
2、ResumeThread恢复被挂起的线程,SuspendThread挂起线程(应当小心使用,防止因挂起而引起死锁)
3、常用的Sleep函数,是使线程自愿放弃属于它的时间片中剩下的部分。只是近似。
4、切换到另一个线程,系统提供了一个名为SwitchToThread的函数,如果存在一个可调度线程,系统会让此线程运行。
5、BOOL GetThreadTimes(HANDLE hThread,//句柄
        PFILETIME pftCreationTime,//创建时间
        PFILETIME pftExitTime,//退出时间
        PFILETIME pftKernelTime,//内核时间
        PFILETIME pftUserTime);//用户时间
6、BOOL GetProcessTimes(HANDLE hProcess,PFILETIME pftCreationTime,PFILETIME pftExitTime,PFILETIME pftKernelTime,PFILETIME pftUserTime);
    参数函数同上。返回一个进程中的所有线程
7、CONTEXT结构在线程调度中起到重要作用。这个结构与cpu型号有关系,包括寄存器,标志位等。
8、获取当前CPU寄存器状态的集合BOOL GetThreadContext(HANDLE hThread,PCONTEXT pContext);
    调用GetThreadContext前先调用SuspendThread。
9、实际一个线程有两个上下文,用户模式和内核模式。GetThreadContext只能返回用户模式上下文。
10,当然也可以使用SetThreadContext来改变结构中的成员,但这容易造成违规。
11、Windows支持6个线程优先级,idle,below normal,normal,above normal,high和real-time。一般程序都用normal。

原创粉丝点击