有没有办法让函数执行特定时间的代码,然后暂停它的执行并继续执行另一个函数。我希望能够创建一个可以执行多任务的程序。我已经尝试过使用<thread>
,但每当我尝试运行程序时,它会部分地运行其中一个线程,然后调试器抛出一个&#34;信号SIGABRT&#34;并停止。还有其他方法吗?
修改:
这是我尝试使用线程的代码。我将此作为测试,以便尝试同时运行两个函数,然后添加计时器以暂停执行。我希望它能够在短时间内运行一个线程,然后转移到另一个线程,并继续这样做。
#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;
}
答案 0 :(得分:1)
在没有多线程的情况下,最常用的方法是滥用大多数GUI框架使用的消息循环。在for
循环中完成了一些工作,然后PumpMessages
或通过处理排队的消息来响应GUI以保持GUI响应,然后完成了一些工作。
在我看来,这是一种不好的做法。它实际导致的是不一致,缓慢和无响应的应用程序。
另一种选择是可恢复的功能,例如C#和proposed for C++17中提供的功能。然而,目前这些并不容易获得。
获得正确的多线程很难,因为您已经发现崩溃和同步错误很常见,只能在运行时找到。然而,多核CPU现在无处不在,你无法真正避免多线程,所以最好学习如何正确使用它。