【Linux】多线程任务模块
创建多个线程,同时完成任务
task.c
#include <sys/types.h>
#include <unistd.h>
#include<stdio.h>
#include <sys/wait.h>
int create_process_tasks(Task_fun_t tasks[],int tsak_cnt)
{pid_t pid;int i = 0;for(i = 0;i < 4;i++){pid = fork();if(pid > 0){}else if(0 == pid){break;}}if(pid > 0){return 0;}else if(0 == pid){tasks[i]();}else{return -1;}return 0;
}void destroy_task(int tasks_cnt)
{int i;for(i = 0;i < tasks_cnt;i++){wait(NULL);}
}
task.h
#ifndef __TASK_H__
#define __TASK_H__typedef void(*Task_fun_t)(void);//将void (*)(void)函数指针重命名为---->Tsak_fun_textern int create_process_tasks(Task_fun_t tasks[],int tsak_cnt);
extern void destroy_task(int task_cnt);
#endif
main.c
#include<stdio.h>
#include"task.h"
int main(int argc, char const *argv[])
{//void (*pfun_arg)(void)[] = {main_ctl, get_cmd, exec_cmd, get_pic, send_pic};Task_fun_t tasks[] = {main_ctl,get_cmd,exec_cmd,get_pic,send_pic};//函数指针数组里装的是调用者需要执行任务的函数的函数名//调用者可自定义函数所需要实现的功能create_process_tasks(tasks,sizeof(tasks) / sizeof(tasks[0]));//创建多线程destroy_task(sizeof(tasks,sizeof(tasks[0])));//回收线程return 0;
}