gpt4 book ai didi

c++ - 超时后如何终止函数调用?

转载 作者:行者123 更新时间:2023-12-02 10:21:11 25 4
gpt4 key购买 nike

假设我有一个foo()函数。我希望它在例如5秒钟内运行,此后必须取消它并继续执行程序的其余部分。

代码段:

int main() {
// Blah blah
foo(); // Running in 5 sec only
// After 5 sec, came here and finished
}

引用:在StackOverflow上搜索了一段时间之后,我发现这是我需要的,但是用python编写: Timeout on a function call
signal.hunistd.h可以相关。

最佳答案

线程可以做到这一点。从C++ 20开始,它将非常简单:

{
std::jthread t([](std::stop_token stoken) {
while(!stoken.stop_requested()) {
// do things that are not infinite, or are interruptible
}
});

using namespace std::chrono_literals;
std::this_thread::sleep_for(5s);
}

请注意,与操作系统的许多交互都会导致进程被“阻止”。这样的示例是POSIX函数 listen,它等待传入连接。如果线程被阻塞,则它将无法继续进行下一个迭代。

不幸的是,C++标准未指定是否应通过停止请求中断此类平台特定的调用。您需要使用特定于平台的方法来确保做到这一点。通常,可以将信号配置为中断阻塞的系统调用。如果是 listen,则可以选择连接到等待的套接字。

关于c++ - 超时后如何终止函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60098659/

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