gpt4 book ai didi

c++ - 使用 C++11 线程确保每个线程都有机会在给定时间段内执行

转载 作者:太空狗 更新时间:2023-10-29 20:35:42 31 4
gpt4 key购买 nike

假设我在 C++11 中有一个多线程程序,其中每个线程控制向用户显示的某些内容的行为。

我想确保对于给定程序的一个线程运行的每个时间段 T,每个线程都有机会执行至少时间 t,所以显示看起来好像所有线程都在同时执行。其思想是基于线程中存储的一些信息,采用分时循环调度机制,强制线程在其时间片结束后等待,而不是依赖于操作系统调度程序。

最好,我还想确保每个线程都是实时调度的。

如果没有办法,只能依赖操作系统,Linux有什么解决办法吗?

这有可能吗?怎么办?

最佳答案

不,C++11 线程无法实现跨平台。调用线程的频率和时长不取决于应用程序。这取决于您使用的操作系统。


但是,仍然有一些函数可以用来标记操作系统,一个特殊的线程/进程非常重要,因此您可以根据您的目的影响这个时间模糊。

您可以获得平台相关的线程句柄以使用操作系统功能。

native_handle_type    std::thread::native_handle //(since C++11)

Returns the implementation defined underlying thread handle.

我只想再次声明,这需要针对每个平台的不同实现!


微软 window

根据Microsoft documentation :

SetThreadPriority function

Sets the priority value for the specified thread. This value, together with the priority class of the thread's process determines the thread's base priority level.


Linux/Unix

对于 Linux,事情就更难了,因为有不同的系统如何安排线程。在 Microsoft Windows 下,它使用优先级系统,但在 Linux 上,这似乎不是默认调度。

有关更多信息,请查看 this stackoverflow 问题(对于 std::thread 应该是相同的,因为 this )。

关于c++ - 使用 C++11 线程确保每个线程都有机会在给定时间段内执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41523983/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com