有什么方法可以让一个函数在特定时间内执行它的代码,然后暂停它的执行并继续执行另一个函数。我希望能够制作一个可以执行多任务的程序。我已经尝试使用 <thread>
,但每当我尝试运行该程序时,它都会部分运行其中一个线程,然后调试器会抛出“信号 SIGABRT”并停止。还有其他方法吗?
编辑:
这是我尝试使用线程的代码。我将此作为测试,以尝试让两个功能同时运行,然后添加计时器以暂停执行。我希望它能够在一个线程上运行一小段时间,然后转到另一个线程,并继续这样做。
#include <iostream>
#include <thread>
using namespace std;
void task1()
{
for (int i=0; i<100; i++)
{
cout << i << '\n';
}
}
void task2()
{
for (int i=0; i<100; i++)
{
cout << i << '\n';
}
}
int main()
{
thread t1(task1);
thread t2(task2);
return 0;
}
最佳答案
在没有多线程的情况下,最常用的方法是滥用大多数 GUI 框架使用的消息循环。一些工作在 for
循环中完成,然后是 PumpMessages
或任何调用以通过处理排队的消息来保持 GUI 响应的内容,然后完成更多工作。
在我看来,这是一种不好的做法。它实际导致的是不一致、缓慢和无响应的应用程序。
另一个选项是可恢复函数,例如 C# 和 proposed for C++17 中可用的函数.然而,这些目前还不可用。
正确使用多线程很难,因为您已经发现崩溃和同步错误很常见,而且只能在运行时发现。然而,多核 CPU 现在无处不在,您无法真正避免多线程,因此最好学习如何正确使用它。
关于c++ - 限制函数执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800692/