gpt4 book ai didi

C++:如何运行系统命令 N 次(异步)并获得 N 次执行时间?

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:57 27 4
gpt4 key购买 nike

我是 C++ 的新手,还没有在 C++ 中使用过任何线程。我在 Windows 7 上使用 visual studio 2010。

我想做的是编写一个主要方法,触发给定系统命令的 N 次执行,并且对于每次执行,它能够获取完成该特定执行所花费的时间。通过获取该命令的返回代码来了解该命令是成功还是失败也很好,作为奖励,虽然最初不是必需的,但返回输出会很好。

现在我知道如何完成其​​中的大部分工作,但考虑到我需要同时执行 N 次执行,并且考虑到每次执行都可能长时间运行,我猜每次执行都需要一个线程,这是我不确定该怎么做。

对于 C++ 线程的新手,请选择一个您想要推荐的线程实现和库,并举例说明如何执行上述操作的主要方法?随后我也会阅读 C++ 线程(如果您对资源有任何指示,请告诉我)。非常感谢。

最佳答案

这是一个使用新的 threading functionality 的小程序来自 C++11:

#include <iostream>
#include <thread>
#include <future>
#include <chrono>
#include <vector>

std::chrono::nanoseconds run_program_and_calculate_time()
{
// TODO: Do your real stuff here
return std::chrono::nanoseconds(5);
}

int main()
{
constexpr int N = 5;

std::vector<std::future<std::chrono::nanoseconds>> results(N);

// Start the threads
for (int i = 0; i < N; i++)
{
results[i] = std::async(std::launch::async,
[](){ return run_program_and_calculate_time(); });
}

// Wait for all threads to be done results
for (int i = 0; i < N; i++)
results[i].wait();

// Print results
for (int i = 0; i < N; i++)
{
std::cout << "Result from " << i << ": "
<< results[i].get().count() << " nanoseconds\n";
}
}

关于C++:如何运行系统命令 N 次(异步)并获得 N 次执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12817549/

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