加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 04:18:02 所属栏目:Windows 来源:网络整理
导读:我正在寻找一种方法来将线程执行的预定时间片的剩余部分产生到另一个线程. WINAPI中有一个 SwitchToThread函数,但它不允许调用者指定它想要切换到的线程.我浏览了MSDN很长一段时间,并没有发现任何可以提供的东西. 对于像我这样的操作系统内部的外行,似乎让线
我正在寻找一种方法来将线程执行的预定时间片的剩余部分产生到另一个线程. WINAPI中有一个 SwitchToThread函数,但它不允许调用者指定它想要切换到的线程.我浏览了MSDN很长一段时间,并没有发现任何可以提供的东西.

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读