限制功能执行时间

时间:2015-01-06 14:23:57

标签: c++ macos xcode6

有没有办法让函数执行特定时间的代码,然后暂停它的执行并继续执行另一个函数。我希望能够创建一个可以执行多任务的程序。我已经尝试过使用<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;
}

1 个答案:

答案 0 :(得分:1)

在没有多线程的情况下,最常用的方法是滥用大多数GUI框架使用的消息循环。在for循环中完成了一些工作,然后PumpMessages或通过处理排队的消息来响应GUI以保持GUI响应,然后完成了一些工作。

在我看来,这是一种不好的做法。它实际导致的是不一致,缓慢和无响应的应用程序。

另一种选择是可恢复的功能,例如C#和proposed for C++17中提供的功能。然而,目前这些并不容易获得。

获得正确的多线程很难,因为您已经发现崩溃和同步错误很常见,只能在运行时找到。然而,多核CPU现在无处不在,你无法真正避免多线程,所以最好学习如何正确使用它。