gpt4 book ai didi

c++ - 如何使用线程每 0.3 秒发送一次消息?

转载 作者:行者123 更新时间:2023-11-30 03:48:07 24 4
gpt4 key购买 nike

我的代码是这样的,

int main() {
while(true) {

...//calculate the result(about 0.25s)
int result = ...;
}
}

在我的代码中,每个循环我都可以获得一个新的结果值,我想使用线程来保存结果值并每 0.3 秒输出一次最新值。我该怎么做?因为我以前没有使用过线程。有人可以帮助我吗?

最佳答案

简单(而且非常笨拙)的方式:

#include <iostream>
#include <thread>
#include <string>
#include <chrono>

// 0.3 seconds
constexpr std::chrono::duration<int, std::micro> ms300(300000);
// 0.1 seconds for time waster.
constexpr std::chrono::duration<int, std::micro> ms100(100000);

// thread task loop
void taskloop()
{
// just 10 iterations. Replace with proper termination condition
for (int count = 0; count < 10; count++)
{
auto start = std::chrono::high_resolution_clock::now();
//calculate result
std::this_thread::sleep_for(ms100); // time waster for test

// output result.
std::cout << start.time_since_epoch().count() << ":" << count << std::endl;
auto delta = std::chrono::high_resolution_clock::now() - start;
auto sleeptime =ms300 - delta;
std::this_thread::sleep_for(sleeptime);
}
}
int main()
{
// start thread and call taskloop
std::thread testthread(taskloop);
// wait for thread to end.
testthread.join();
}

关于c++ - 如何使用线程每 0.3 秒发送一次消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33338407/

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