首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在现代/抢占式调度程序下运行时,调用pthread_yield()有什么合理的理由吗?

在现代/抢占式调度程序下运行时,调用pthread_yield()有什么合理的理由吗?
EN

Stack Overflow用户
提问于 2020-12-21 04:59:15
回答 1查看 68关注 0票数 0

pthread_yield被记录为“导致调用线程放弃CPU",但在现代操作系统/调度器上,CPU的放弃会在适当的时间自动发生(例如,每当线程调用阻塞操作时,和/或当线程的量程过期时)。因此,除了在仅协作的任务调度器下运行的特殊情况外,pthread_yield()是残留的/无用的吗?或者有没有一些用例,即使在现代的抢占式调度程序下,调用它仍然是正确的/有用的?

EN

回答 1

Stack Overflow用户

发布于 2020-12-21 17:21:23

pthread_yield()为您提供了短暂睡眠的机会--而不是定时睡眠。您将剩余的时间片交给其他线程或进程,但不会将线程放在等待队列中。

还有一段时间之前,我读到了调度器如何对交互进程进行优先级排序。这些是用户直接与之交互的进程,您最能感受到它们的迟缓(如果您的UI是响应式的,您就不会感觉到您的系统很慢)。交互式进程的属性之一是它们几乎没有什么可做的,而且大多不会使用整个时间片。因此,如果一个进程在它的时间片到期之前一直在让步,你就会认为它是交互式的,并提高了它的优先级。有些漏洞利用此技巧有效地使用了99%的CPU,同时将违规进程显示为0%。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65384731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档