字体
第(2/5)页
关灯
   存书签 书架管理 返回目录
elete:从内存中删除线程对象的标志。

    9.3.3 线程的管理和cāo作

    1.线程的挂起、继续和休眠

    (1)挂起

    如果一个正在执行的线程用完了自己的时间片,则这个线程将会被挂起,并将CPU 时间

    分给其他等待的线程。也可以通过调用Win32 API 函数SuspendThread 来挂起一个正在执行

    的线程,如果调用成功,返回线程上一次的挂起计数,否则返回-1。SuspendThread 的函数原

    型如下:

    DWORD SuspendThread(

    HANDLE hThread

    );

    函数中主要参数的意义如下。

    ? hThread:线程的句柄。

    MFC 将线程cāo作进行了封装,CWinThread 的对象可以调用它的成员函数SuspendThread

    来挂起一个正在执行的线程。

    枫叶文学网www.fywxw.com

    第9 章 多线程

    ·213·

    (2)继续

    如果继续执行SuspendThread 挂起的线程,或者在执行时采用CREATE_SUSPENDED 标

    记创建的线程,可以调用函数RescomThread,将当前被挂起的线程的挂起计数减一。如果一

    个线程的挂起计数减为0,则线程开始继续执行。如果调用成功,返回线程上一次的挂起计

    数,否则返回0xFFFFFFFF。如果返回值为0,则说明当前线程并没有挂起。如果返回1,说

    明线程被挂起,现在开始继续执行。RescomThread 的函数原型如下:

    DWORD RescomThread( );

    (3)休眠

    函数Sleep 可以让当前执行的线程休眠一段时间,而函数SleepEx 将线程挂起,等待下

    列事件之一发生。

    ? 一个I/O 回调函数被调用。

    ? 线程需要调用一个异步的过程。

    ? 时间间隔到。

    它们的函数原型如下:

    VOID Sleep(

    DWORD dwMilliseconds

    );

    函数中主要参数的意义如下。

    ? dwMilliseconds:休眠时间。

    DWORD SleepEx(

    DWORD dwMilliseconds,

    BOOL bAlertable

    );

    函数中主要参数的意义如下。

    ? dwMilliseconds:超时间隔。

    ? bAlertable:指定函数是否依赖I/O 回调函数结束。

    如果指定的时间间隔期满,则返回0。如果函数返回依赖于一个或多个I/O 回调函数则

    返回WAIT_IO_COMPLETION,这种情况只有bAlertable 为TRUE 的时候才会发生。

    2.线程的优先级

    (1)级别

    Windows 允许用户在线程执行的过程中动态地得到或者改变线程的优先级,使重要的线

    程可以优先执行,占有较多的时间片。该过程可以通过调用Win32 API 函数SetThreadPriority

上一页 目录 下一页