您的位置 首页 知识

linux多线程(Linux多线程的创建方法)

linux多线程
        大部分玩树莓派的同好都是从单片机开始入门,从51到32再到linux。
树莓派和单片机的最大区别就是操作系统,虽然stm32也能运行UCOSII,freeRTOS等嵌入式系统,但是树莓派运行的是linux,是带MMU的计算机系统,可以运行各种脚本语言,比如最近虚火的Python等。
       在单片机上,检测按键有两种方法,轮询和中断,如果单片机主频低的话,为了保证实时性一般会使用中断。
        但在树莓派里,可以直接使用多线程,下面讲解一下在linux里如何创建线程。
头文件
#include<pthread.h> //多线程的头文件2.函数
int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*routine)(void *),void *arg);里面有四个参数
thread是一个线程对象
attr     线程属性,NULL代表默认属性
routine  线程执行的函数
arg      传递给routine的参数,没有参数时填NULL

3.下面放上完整代码,功能:终端不断获取输入,将输入值作为闪烁间隔
#include<stdio.h>#include<wiringPi.h>#include<pthread.h>//多线程头文件
//注:变量名不能使用time,因为在pthread.h里调用了time.h,里面有一个长整型变量//叫time,在这里定义time的话会报错重定义int time_delay=500;//延时时间void *ReadTime(void *arg)//线程要执行的函数{ for(;;) { scanf(“%d”,&time_delay);//获取输入 }
} int main(){ pthread_t a_thread;//定义一个线程对象 pthread_create(&a_thread,NULL,ReadTime,NULL);//创建线程 // 线程对象 缺省属性 调用函数 传入参数
wiringPiSetup(); pinMode(28,OUTPUT);    for(;;) { digitalWrite(28,HIGH); delay(time_delay); digitalWrite(28,LOW);      delay(time_delay); }return 0;}4.看下演示效果

播放

linux多线程相关文章