在C ++ / C中在后台运行定期循环

时间:2014-08-21 00:02:06

标签: c++ c multithreading pthreads

我正在尝试创建实时工作的嵌入式硬件程序的C ++程序。我的C ++程序中的主循环使用250毫秒的延迟时间。就像:

int main()
{
  do{
   doSomething();
   delay(250);
  }while(1)
}

主循环的延迟对我的程序运行至关重要。 我需要使用5ms延迟检查其他内容。

sideJob()
{
   while(1){
    checkSomething();
    delay(5);
   }
}

如何定义函数sideJob与主循环一起运行。总而言之,如果可能的话,我需要使用简单的函数来解决线程问题。我正在使用Linux。任何帮助都会得到很大的帮助。

编辑:这是我到目前为止所做的,但我想同时运行sideJob和主线程。

#include <string>
#include <iostream>
#include <thread>

using namespace std;

//The function we want to make the thread run.
void task1(string msg)
{

     cout << "sideJob Running " << msg;

}

int main()
{  
    // Constructs the new thread and runs it. Does not block execution.
    thread t1(task1, "Hello");

    //Makes the main thread wait for the new thread to finish execution, therefore blocks its own execution.
    t1.join();
    while(1){
        printf("Continuous Job\n");   
    }
}

1 个答案:

答案 0 :(得分:1)

使用不同的线程以并行执行此任务。

要了解有关详情,请查看here。 有关StackOverflow的示例,请查看here

您还可以找到大量教程(例如,here)。