第七章 线程的调度、优先级和亲缘性(2)

二、暂停和恢复进程的运行

Windows不存在暂停或恢复进程的概念,因为进程不会被安排获得 C P U时间。Windows允许一个进程暂停另一个进程中的所有线程的运行,但是从事暂停操作的进程必须是个调试程序。

三、线程的睡眠方式

VOID Sleep(DWORD dwMilliseconds);

使线程自己暂停运行dwMilliseconds MS,在此时间片内线程是不可调度状态。

调用该函数可以使进程自愿放弃所拥有的剩余时间片;为Sleep传递0时,调用线程将释放剩余时间片,迫使系统调用别的线程(如果不存在多个拥有相同优先级的可调度线程,系统会重新调度刚Sleep0)的线程);Sleep(INFINITE)使线程永远不会被调度(最好让线程退出以还原堆栈和内存对象,而不用该方法)。

四、线程间的切换

BOOL SwitchToThread();

系统查看是否存在迫切需要 C P U时间的线程。如果没有就会立即返回。如果存在就对该线程进行调度(该线程的优先级可能低于调用 SwitchToThread的线程) 。这个迫切需要CPU时间的线程可以运行一个时间段,然后系统调度程序照常运行。

该函数允许一个需要资源的线程强制另一个优先级较低、而目前却拥有该资源的线程放弃该资源。调SwitchToThread函数时没有其他线程能够运行,那么该函数返回 FALSE,否则返回一个非0值。

传递一个0ms的超时参数时,SwitchToThread允许优先级低的进程运行,而Sleep函数会立即返回对该线程进行重新调度,而不会允许低优先级的线程被调度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值