应该如何在 pthread() 中使用 yield?

Posted

技术标签:

【中文标题】应该如何在 pthread() 中使用 yield?【英文标题】:How shuold use yield in pthread()? 【发布时间】:2015-08-17 17:18:18 【问题描述】:

例如,我在我的系统中执行主动超线程,每个内核中运行两个线程。

现在我的问题是:

当这些线程之一调用yield() 时会发生什么?

在这种情况下确实如此,请使用yield()

【问题讨论】:

为什么不按照实际的文档,有什么特别不清楚的地方? 我的问题是在这种情况下会发生什么? 再说一次,你还有什么不清楚的地方:man7.org/linux/man-pages/man3/pthread_yield.3.html ?? this:pthread_yield() 导致调用线程放弃 CPU。 当我将每个线程分配给每个核心时怎么可能? 【参考方案1】:

除非你有一些不寻常的特殊要求,当一个线程调用yield() 时,你应该切换到另一个准备运行的线程并让屈服线程准备运行。如果有多个线程,则切换到哪个准备运行的线程取决于您。您可以更喜欢分配给该核心的线程,但如果您愿意,也可以进行“线程窃取”。

【讨论】:

以上是关于应该如何在 pthread() 中使用 yield?的主要内容,如果未能解决你的问题,请参考以下文章

是应该在堆栈还是堆上分配pthread函数参数?

写了那么久的Python,你应该学会使用yield关键字了

pthread_join的介绍

pthread.h - 自愿CPU是否是调度另一个用户级线程的唯一触发器?

如何在 C# 中使用 yield

pthread_self() 贵吗?