您的位置:首页 > 财经 > 产业 > 手游推广平台哪个好_制作网页软件列表html代码_网络营销与直播电商好就业吗_短视频运营是做什么的

手游推广平台哪个好_制作网页软件列表html代码_网络营销与直播电商好就业吗_短视频运营是做什么的

2025/4/27 12:51:32 来源:https://blog.csdn.net/2301_79096607/article/details/147539269  浏览:    关键词:手游推广平台哪个好_制作网页软件列表html代码_网络营销与直播电商好就业吗_短视频运营是做什么的
手游推广平台哪个好_制作网页软件列表html代码_网络营销与直播电商好就业吗_短视频运营是做什么的

目录

tasks.h

type.h

main.c

tasks.c

makefile

运行结果


调用多线程框架,在主函数写好环境监控文件的函数,使用结构体封装环境指标的参数

最后使用makefile管理工程文件

tasks.h

#include<pthread.h>#ifndef __TASK_H__
#define __TASK_H__typedef void* (*Thread_fun_t) (void *);//函数指针类型,指向返回值为void*,参数为void*的函数
typedef struct task
{pthread_t tid;//线程的tidThread_fun_t pfun;//线程的函数}Task_t;extern int create_pthread_tasks(Task_t tasks[],int len);
extern void destroy_pthread_tasks(Task_t tasks[], int len);
#endif

type.h

#include<time.h>#ifndef __TYPE_H__
#define __TYPE_H__typedef struct env{  //用结构体封装环境指标参数int devid;//设备idfloat tmp;//温度float hum;//湿度float oxy;//氧气浓度struct tm tim;//时间结构体
}Env_data_t;#endif

main.c

#include<stdio.h>
#include <pthread.h>
#include<unistd.h>
#include<time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include"tasks.h"
#include"type.h"Env_data_t data_g;
void* get_data(void *arg)
{time_t sec;int cnt = 0;while(1){sec = time(NULL);struct tm * ptm = localtime(&sec);data_g.devid = cnt++;data_g.hum = 26.7;data_g.oxy = 66.6;data_g.tim = *ptm;data_g.tmp = 36.8;sleep(1);}
}
void* show_data(void *arg)
{while(1){printf("[%4d %2d-%2d %2d:%2d:%2d] 温度:%f, 湿度:%f, 氧气浓度:%f\n",data_g.tim.tm_year+1900, data_g.tim.tm_mon+1, data_g.tim.tm_mday,data_g.tim.tm_hour, data_g.tim.tm_min, data_g.tim.tm_sec,data_g.tmp,data_g.hum,data_g.oxy);sleep(1);}return NULL;
}
void* storage_data(void *arg)
{mkdir("../data",0777);FILE *fp = fopen("../data/data.txt", "a");if(NULL == fp){perror("fail open data.txt!");return NULL;}while(1){fprintf(fp, "[%4d %2d-%2d %2d:%2d:%2d] 温度:%f, 湿度:%f, 氧气浓度:%f\n",data_g.tim.tm_year+1900, data_g.tim.tm_mon+1, data_g.tim.tm_mday,data_g.tim.tm_hour, data_g.tim.tm_min, data_g.tim.tm_sec,data_g.tmp,data_g.hum,data_g.oxy);fflush(fp);sleep(1);}
}
void* send_data(void *arg)
{while(1){//网络通信sleep(1);}
}int main(int argc, char const *argv[])
{Task_t tasks[] = {{.pfun = get_data,},{.pfun = show_data,},{.pfun = storage_data,},{.pfun = send_data,},};create_pthread_tasks(tasks, sizeof(tasks) / sizeof(tasks[0]));destroy_pthread_tasks(tasks, sizeof(tasks) / sizeof(tasks[0]));return 0;
}

tasks.c

#include"tasks.h"
#include<pthread.h>
#include<stdio.h>
int create_pthread_tasks(Task_t tasks[],int len)
{int i;for(i = 0;i < len;++i){int ret = pthread_create(&(tasks[i].tid),NULL,tasks[i].pfun,NULL);if(ret != 0){printf("fail to pthread!\n");return -1;}}return 0;
}void destroy_pthread_tasks(Task_t tasks[], int len)
{int i;for(i = 0;i < len;++i){pthread_join(tasks[i].tid,NULL);}
}

makefile

DST=app
SRC=main.c tasks.c
CC=gcc
FLAGS=-lpthread
INC=../include$(DST):$(SRC)$(CC) $^ -o $@ $(FLAGS) -I$(INC)clean:rm $(DST)

运行结果

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com