【发布时间】:2021-03-30 12:31:33
【问题描述】:
我正在用 C 语言实现一个线程库,但我对 pthread_yield() 的含义感到困惑。我已经在终端中的man page 上进行了查找,但我并没有真正理解解释。谁能给我解释一下?
【问题讨论】:
-
能否请您详细说明您理解有困难的部分?
-
没有太多要理解的,它是一个无用的函数,不会给你任何可用的结果。它可用于对编写得非常糟糕的程序进行猴子补丁,使其看起来非常轻微比实际情况要少,从而更难诊断潜在问题以及调试和修复真正的问题。
-
它在手册页上说 pthread_yield 导致调用线程放弃 CPU。这意味着什么?
-
这是关于the Linux
pthread_yield()man page 的重要说明:“pthread_yield()旨在与实时调度策略一起使用(即SCHED_FIFO或SCHED_RR)。@ 的使用987654327@ 带有非确定性调度策略(例如SCHED_OTHER)未指定,很可能意味着您的应用程序设计已损坏。" -
换句话说,如果你想让一个线程停止运行以便其他线程可以做某事,你不应该使用
pthread_yield()- 或sleep()或类似的东西。您需要使用适当的同步对象,例如互斥锁、信号量和条件变量。
标签: c multithreading pthreads yield