加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
workermanager.h 1.96 KB
一键复制 编辑 原始数据 按行查看 历史
hotmocha 提交于 2015-04-02 22:29 . spider init
#ifndef _H_WORKERMANAGER_H_
#define _H_WORKERMANAGER_H_
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/time.h>
#include <fcntl.h>
#include <errno.h>
#include <pthread.h>
#include "worker.h"
#define DEFAULTBASEPATH "./"
#define TASKMANAGER_STATUS_INITWORKERERR -1
/* ####### cmd值 ####### */
#define TASKMANAGER_CMD_EXIT 1 /* 马上退出 */
#define TASKMANAGER_CMD_SHOW 2 /* 查看当前运行状态 */
#define ALLCOMPLETE 1
#define RUNNINGERR 2
#define ALLTIMEOUT 3
typedef int (*TaskInit)(struct TaskEnv *tenv);
typedef int (*TaskExit)(struct TaskEnv *tenv);
struct TaskInitStruct {
char taskname[51];
char basepath[101];
char logfilename[51];
char sofilename[51];
int timeout; /* second */
TaskInit taskinit;
TaskExit taskexit;
struct WorkerInitStruct* *array;
};
struct TaskEnv {
char taskname[51];
char basepath[101];
char logfilename[51];
char sofilename[51];
TaskInit taskinit;
TaskExit taskexit;
int cmd;
pid_t pid;
/* cmd可以在管理进程中直接访问 */
/* 指向worker初始化函数数组 */
struct WorkerInitStruct* *pInitWorkerArray;
int workernum;
/* 子线程的环境列表 */
struct WorkerEnv* *workers;
int timeout; /* s为单位, 如果在timeout没有向主线程汇报时间,将导致退出 */
/* 可能是任务已经完成(因为汇报会在添加新任务或者检查到有正在运行的任务是才会汇报 */
};
int StartTaskManager(struct TaskEnv* env, struct WorkerInitStruct* array);
struct TaskEnv* InitTaskEnv();
void FreeTaskEnv(struct TaskEnv* env) ;
int InitWorkers(struct TaskEnv *env);
void InitTaskWithInitStruct(struct TaskEnv* tenv, struct TaskInitStruct *initstruct);
int InitWorkers(struct TaskEnv *env);
int SetTaskBasepath(struct TaskEnv *tenv, char *path);
int DoTaskManager(struct TaskEnv *env, struct TaskInitStruct *initstruct);
struct TaskEnv *GetTaskEnvByPid(pid_t pid);
int GetTaskCmd(struct TaskEnv *tenv);
int SetTaskLog(struct TaskInitStruct *tenv);
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化