嵌入式第三十天(线程)
一.线程操作相关函数
1.
2.
示例:
#include <stdio.h>
#include <pthread.h>typedef int u32;
//将一个函数指针类型重命名成PFUN_t类型
typedef void *(*PFUN_t)(void *);void *main_ctl(void *arg)
{while (1){printf("主控模块正在工作...\n");sleep(1);}
}void *get_cmd(void *arg)
{while (1){printf("获取指令模块正在工作...\n");sleep(1);}
}void *ctl_cmd(void *arg)
{while (1){printf("执行指令模块正在工作...\n");sleep(1);}
}void *get_pic(void *arg)
{while (1){printf("图像采集模块正在工作...\n");sleep(1);}
}void *send_pic(void *arg)
{while (1){printf("图像发送模块正在工作...\n");sleep(1);}
}
int main(int argc, const char *argv[])
{pthread_t tid[5];// void *(*pfun)(void *); //函数指针 //指针名称:pfun
// void *(*pfuns[5])(void *) = {main_ctl, get_cmd}; //函数指针数组 //数组名:pfunint a[10];PFUN_t tasks[5] = {main_ctl, get_cmd, ctl_cmd, get_pic, send_pic};for (int i = 0; i < 5; i++){pthread_create(&tid[i], NULL, tasks[i],NULL);}while (1){printf("xxxxx\n");sleep(1);}pthread_join();/*pthread_create(&tid[0], NULL, main_ctl, NULL);pthread_create(&tid[1], NULL, get_cmd, NULL);pthread_create(&tid[2], NULL, ctl_cmd, NULL);pthread_create(&tid[3], NULL, get_pic, NULL);pthread_create(&tid[4], NULL, send_pic, NULL);*/for (int i = 0; i < 5; i++){pthread_join(tid[i], NULL);}return 0;
}
3.
简单示例:
4.线程间的通信
方式:全局变量,全局队列,共享内存区域.
1.
2.
简单示例: