当前位置: 首页 > 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.搜索二维矩阵
  • 九江市人大常委会原党组成员、副主任戴晓慧主动交代问题,正接受审查调查
  • 徐之凯评《突如其来的勇气》|早熟的抵抗
  • 消息人士称哈马斯愿与以色列达成长期停火
  • 全国首家由司法行政部门赋码登记的商事调解组织落户上海
  • “万人大院”重组,上海交大校长丁奎岭:人才培养事关生存发展,再难也要改
  • “云南舞蹈大家跳”暨牟定“三月会”下周举行,城际公交免票