C++ 切换到线程窗口的Linux选项

C++ 切换到线程窗口的Linux选项,c++,linux,windows,linux-kernel,C++,Linux,Windows,Linux Kernel,Windows提供了一个SwitchTothread函数,它提供了运行/调度低优先级线程的机会。有人知道Linux中的选项吗? 那就太好了 不同之处在于SwitchToThread()如果发生线程切换,则返回非零,否则返回零,而pthread\u yield()在成功时返回零,在错误时返回非零(目前在Linux上总是成功)。请注意,Linux中的收益率结果在不同的内核版本之间是不一致的,不建议使用,通常会导致性能非常差,因为在整个系统中所有其他进程的空闲/批处理优先级线程都运行之前,您可能无法运

Windows提供了一个SwitchTothread函数,它提供了运行/调度低优先级线程的机会。有人知道Linux中的选项吗? 那就太好了


不同之处在于
SwitchToThread()
如果发生线程切换,则返回非零,否则返回零,而
pthread\u yield()
在成功时返回零,在错误时返回非零(目前在Linux上总是成功)。

请注意,Linux中的收益率结果在不同的内核版本之间是不一致的,不建议使用,通常会导致性能非常差,因为在整个系统中所有其他进程的空闲/批处理优先级线程都运行之前,您可能无法运行。@Zan那么该选项是什么?@CrazyC:使用条件,互斥或信号量,而不是随机向其他线程屈服。SwitchToThread主要用于优先级反转。和pthread_yield做类似的事情。因此,使用同步对象无法解决问题。不同内核的
yield()
结果不同,但这只是因为线程调度的整个性质不同。如果您的应用程序依赖于特定类型的线程调度范例,那么无论您是否使用yield,它都会在Linux内核中出现问题。此外,
yield()
SwitchToThread()
行为的较大影响因素是主机系统上的内核。通常在产生当前线程的四核系统上,与让操作系统调度器自行决定相比,当前线程什么也不做,甚至可能降低性能。