windows – WIN32:让执行到另一个(给定)线程

前端之家收集整理的这篇文章主要介绍了windows – WIN32:让执行到另一个(给定)线程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一种方法来将线程执行的预定时间片的剩余部分产生到另一个线程. WINAPI中有一个 @L_301_0@函数,但它不允许调用者指定它想要切换到的线程.我浏览了MSDN很长一段时间,并没有发现任何可以提供的东西.

对于像我这样的操作系统内部的外行,似乎让线程应该能够指定它想要将执行传递给哪个线程.是可能还是仅仅是我的想象力?

您无法将处理器时间片发送到指定线程的原因是Windows具有抢占式调度内核,这几乎将处理器时间安排的责任和权限放在内核手中,而只放在内核中.

因为这样的线程无法控制它们何时运行,如果它们运行,甚至更少控制在它们的时间片结束后切换到哪个线程.

但是,您可以通过以下几种方式影响上下文切换:

>通过增加某个线程的优先级,您可能会强制调度程序更频繁地调度它而不利于其他线程(显然反过来也适用 – 您可以降低其他线程的优先级)
>当您没有工作要做以帮助调度程序完成工作时,您可以编写进程以将线程置于内核等待模式.当使用适当的内核等待结构(如Critical Sections,Mutexes,Semaphores和Timers)时,您有效地告诉内核,在满足某个特定代码之前,不需要调度某个线程.

注意:您很少有理由篡改任务优先级,因此请小心使用

猜你在找的Windows相关文章