- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我在 C++11 中有一个多线程程序,其中每个线程控制向用户显示的某些内容的行为。
我想确保对于给定程序的一个线程运行的每个时间段 T
,每个线程都有机会执行至少时间 t
,所以显示看起来好像所有线程都在同时执行。其思想是基于线程中存储的一些信息,采用分时循环调度机制,强制线程在其时间片结束后等待,而不是依赖于操作系统调度程序。
最好,我还想确保每个线程都是实时调度的。
如果没有办法,只能依赖操作系统,Linux有什么解决办法吗?
这有可能吗?怎么办?
最佳答案
不,C++11 线程无法实现跨平台。调用线程的频率和时长不取决于应用程序。这取决于您使用的操作系统。
但是,仍然有一些函数可以用来标记操作系统,一个特殊的线程/进程非常重要,因此您可以根据您的目的影响这个时间模糊。
您可以获得平台相关的线程句柄以使用操作系统功能。
native_handle_type std::thread::native_handle //(since C++11)
Returns the implementation defined underlying thread handle.
我只想再次声明,这需要针对每个平台的不同实现!
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,事情就更难了,因为有不同的系统如何安排线程。在 Microsoft Windows 下,它使用优先级系统,但在 Linux 上,这似乎不是默认调度。
有关更多信息,请查看 this stackoverflow 问题(对于 std::thread
应该是相同的,因为 this )。
关于c++ - 使用 C++11 线程确保每个线程都有机会在给定时间段内执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41523983/
如果我使用以下方法计算 java.time 中 2 个 LocalDate 之间的差异: Period p = Period.between(testDate, today); 然后我得到一个包含年、
我正在开发一个有多种不同费率的预订平台。这些费率由一天中的时间、星期几和一年中的一天决定。以下是所涉及的间隔类型的一些示例: 周一至周五,上午 9 点至下午 5 点 周六和周日,中午 12 点到早上
我有大量数据,包括开始时间、停止时间和值。开始和停止时间因行而异,以 5 分钟为增量。我正在尝试创建一个新的数据框,该数据框具有 5 分钟的间隔以及该间隔在行的开始和停止范围内的所有行的总和。 我有一
我有一个这样的表: --------------------------------------------- |Id | Step | StartedAt
我有一个网络应用程序,用户将在其中输入 2 个日期。一个 StartDate 和一个 EndDate。现在我想编写它,以便在选择 StartDate 和 EndDate 时确定有多少周,然后显示这些周
这看起来并不直截了当。 我正在尝试: @Override public int compare(Period o1, Period o2) { return o1.toStandardDays
我必须为团队发送 session 邀请,这是我的邮件 $ical = 'BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 11.0
我有这个 ISO 8601 时间段字符串: P0Y0M0DT3H5M0.000S 并且 PHP7.4 无法用它构造 DateInterval。 format('%h Hours %m Minutes
我想要获取包含一段时间(格式为 HH:MM:SS)的多个单元格的总和。在 LibreOffice Calc 4.0.3.3 中,我复制粘贴了 G14:G21 范围内的时间段,并将单元格格式设置为时间
我有一个表(MySQL),每n秒捕获一次样本。该表有很多列,但重要的是两列:时间戳(TIMESTAMP 类型)和计数(INT 类型)。 我想做的是获取一定时间范围内计数列的总和和平均值。例如,我每 2
我有一个表(MySQL),每n秒捕获一次样本。该表有很多列,但重要的是两列:时间戳(TIMESTAMP 类型)和计数(INT 类型)。 我想做的是获取一定时间范围内计数列的总和和平均值。例如,我每 2
我在一个项目上使用 joda-time (1.6.2),我正在做的其中一件事就是计算预测时间和实际时间之间的差异。这种差异有时是积极的,有时是消极的。虽然适当的方法可能是使用 Duration 而不是
我有一个表 (MySQL),它每 n 秒捕获一次样本。该表有很多列,但最重要的是两列:一个时间戳(TIMESTAMP 类型)和一个计数(INT 类型)。 我想做的是获取计数列在一段时间内的总和和平均值
我想让我的折线图显示过去 3 个月的数据。 GDS 有一个“最后一个季度”的日期范围,但这显示的是 Q1、Q2、Q3 或 Q4。我需要的是过去3个整月(不算当月)的数据。我尝试创建一个计算字段,但事实
我想让我的折线图显示过去 3 个月的数据。 GDS 有一个“最后一个季度”的日期范围,但这显示的是 Q1、Q2、Q3 或 Q4。我需要的是过去3个整月(不算当月)的数据。我尝试创建一个计算字段,但事实
我是一名优秀的程序员,十分优秀!