gpt4 book ai didi

multithreading - 等待线程加入时间限制

转载 作者:行者123 更新时间:2023-12-03 12:55:55 25 4
gpt4 key购买 nike

我有一个线程调用带有参数MyFunc的函数params。基本上,它在MyFunc运行时在流中输出点,超时为500毫秒。我需要等待一个线程1分钟,然后如果函数在1分钟内完成工作,则需要输出“MyFunc成功完成”,或者如果1分钟后仍在运行,则需要输出“超时”。我怎样才能做到这一点 ?

std::future<void> f = std::async(std::launch::async, MyFunc, params);

std::chrono::milliseconds span(500);
while (f.wait_for(span) == std::future_status::timeout)
std::cout << '.';

最佳答案

您可以使用wait_for(),而不会出现问题。

std::future<void> f = std::async(std::launch::async, MyFunc, params);


auto because = std::async(std::launch::async,[&]()
{
// for your use, you may want to change it from 0 seconds to something
// like 1 second, or 500 ms
while(f.wait_for(std::chrono::seconds(0)) != std::future_status::ready)
std::cout << ".";
}).wait_for(std::chrono::seconds(60));

if(because == std::future_status::ready)
std::cout << "Successfully Completed\n";
else
std::cout << "Timeout";

关于multithreading - 等待线程加入时间限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23318391/

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