Mar*_*ski 7 windows winapi multithreading
我正在寻找一种方法来将线程执行的预定时间片的剩余部分产生到另一个线程.WINAPI中有一个SwitchToThread函数,但它不允许调用者指定它想要切换到的线程.我浏览了MSDN很长一段时间,并没有发现任何可以提供的东西.
对于像我这样的操作系统内部的外行,似乎屈服线程应该能够指定它想要将执行传递给哪个线程.是可能还是仅仅是我的想象力?
您无法将处理器时间片发送到指定线程的原因是Windows具有抢占式调度内核,这几乎将调度处理器时间的责任和权限放在内核和内核的手中.
因为这样的线程无法控制它们何时运行,如果它们运行,甚至更少控制在它们的时间片结束后切换到哪个线程.
但是,有一些方法可能会影响上下文切换:
通过增加某个线程的优先级,您可能会强制调度程序更频繁地调度它而不利于其他线程(显然反过来也适用 - 您可以降低其他线程的优先级)
你可以编写你的进程来编写线程在内核等待模式下,当他们没有工作要做,以帮助调度程序完成它的工作.当使用适当的内核等待结构(如Critical Sections,Mutexes,Semaphores和Timers)时,您有效地告诉内核,在满足某个特定代码之前,不需要调度某个线程.
注意:您很少有理由篡改任务优先级,因此请小心使用
归档时间: |
|
查看次数: |
4035 次 |
最近记录: |