【发布时间】:2020-09-09 00:43:58
【问题描述】:
我想并行运行两个函数,每个函数都有不同的执行频率。
我使用了CppTime::Timer,但我意识到,这些函数实际上是在彼此后面执行的。那是因为CppTime 执行了彼此背后的线程,还是我的代码有问题?
这里是脚本:
CppTime::Timer timer;
std::vector<CppTime::timer_id> timer_id;
timer_id.push_back(timer.add(std::chrono::seconds(0), &longProcess, std::chrono::milliseconds(static_cast<unsigned>(1000.0 / frequency_slow))));
timer_id.push_back(timer.add(std::chrono::seconds(0), &shortProcess, std::chrono::milliseconds(static_cast<unsigned>(1000.0 / frequency_high))));
是否有人知道错误,或者有人有其他解决方案而不是 CppTime?
编辑:
一个进程应该在1Hz 运行(大约需要0.5s)。另一个进程应该在10Hz 运行(只需要几个ms)。不并行运行也没问题,10Hz进程在0.5s之后启动。
【问题讨论】:
-
多线程不会在完全并行的时间内自动执行代码。即使必须在不同的内核上运行(时钟可能是共享的硬件设备)。问题是您的要求可以接受哪个最小时间间隔?
-
由于
CppTime显然是您从某处获得或自己编写的某个库,因此包含有关它的额外详细信息非常重要。不要假设这里的任何人以前都使用过这个,或者他们会花时间在互联网上寻找它,只是因为你漏掉了这些信息。 -
@paddy 好像是this implementation
-
你想通过同时运行两个时间对齐的线程来达到什么目的?
-
一个简单的控制回路,有高层和低层控制器。
标签: c++ multithreading time