0

我不是C开发人员,但我需要编写简单的程序,但我遇到了延迟问题。这是我的程序:

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>

#include <wiringPi.h>
#include <softPwm.h>

int main (int argc, char *argv[])
{
  int val = 10;
  if (argc > 1) {
    val = atoi(argv[1]);
  }
  wiringPiSetup ()  ;

  pinMode(1, OUTPUT);
  softPwmCreate (1, 0, 100) ;
  printf ("Soft Pwm created: %s!\n", argv[1]) ;

  softPwmWrite (1, val) ;

  delay (200);

  return 0;
}

它工作得很好,直到我删除延迟行 (200)。在程序完成之前,我如何才能等到函数 softPwmWrite 完成而不延迟() ?我正在使用LinuxWiringPi库。谢谢。

4

1 回答 1

1

包括pthread.h并调用pthread_exit

#include <pthread.h>

....

softPwmWrite (1, val) ;
pthread_exit(0);
}

返回时softPwmWrite,它将退出程序。softPwmWrite 使用线程,您只需要确保您的程序在线程完成之前不会死机。当所有线程完成时,进程将在最后退出。

于 2015-07-16T07:32:59.877 回答