当前位置: 首页 > news >正文

【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;
}

相关文章:

  • 【Linux篇】轻松搭建命名管道通信:客户端与服务器的互动无缝连接
  • 卷积神经网络--手写数字识别
  • day33和day34图像处理OpenCV
  • 教育行业网络安全:守护学校终端安全,筑牢教育行业网络安全防线!
  • FastGPT Docker Compose本地部署与硅基流动免费AI接口集成指南
  • 【计算机网络】第五章 局域网技术
  • GPT,Genini, Claude Llama, DeepSeek,Qwen,Grok,选对LLM大模型真的可以事半功倍!
  • 形象理解华为云物联网iotDA开发流程
  • 批量导出多个文件和文件夹名称与路径信息到Excel表格的详细方法
  • AgentGPT开源程序可以在浏览器中组装、配置和部署自主人工智能代理
  • 高并发场景下的淘宝 API 开发实践:商品数据实时采集与性能优化
  • 修改IP地址能否精确到地级市的县?——全面解析
  • 基于ueditor编辑器的功能开发之重写ueditor的查找和替换功能,支持滚动定位
  • ts中的类型
  • CSS零基础入门笔记:狂神版
  • 前端实战-AJAX
  • ubuntu 22.04 安装和配置 mysql 8.0,设置开机启动
  • 力扣热题100——矩阵
  • Spring Boot 断点续传实战:大文件上传不再怕网络中断
  • 74.搜索二维矩阵
  • 上汽集团一季度净利润30.2亿元,同比增长11.4%
  • 京津冀“飘絮之困”如何破解?专家坦言仍面临关键技术瓶颈
  • 阿里开源首个“混合推理模型”:集成“快思考”、“慢思考”能力
  • 外交部官方公众号发布视频:不跪!
  • 上海112位全国劳动模范和先进工作者接受表彰,樊振东榜上有名
  • 贸促会答澎湃:5月22日将举办2025年贸易投资促进峰会