加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
threadPool.c 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
SpaceX_zhao 提交于 2023-05-17 12:00 . alopex modify
#include "threadPool.h"
int epollAdd(int epfd, int fd){
struct epoll_event event;
event.events = EPOLLIN;
event.data.fd = fd;
int ret = epoll_ctl(epfd,EPOLL_CTL_ADD,fd,&event);
ERROR_CHECK(ret,-1,"epollAdd");
return 0;
}
int epollDel(int epfd, int fd){
int ret = epoll_ctl(epfd,EPOLL_CTL_DEL,fd,NULL);
ERROR_CHECK(ret,-1,"epollDel");
return 0;
}
void *threadFunc(void* arg){
// 接受传进来的threadPool
threadPool_t *pthreadPool = (threadPool_t *)arg;
while(1){
// 加锁
pthread_mutex_lock(&pthreadPool->mutex);
while(pthreadPool->taskQueue.queueSize == 0){
// 没有就绪任务则陷入等待
pthread_cond_wait(&pthreadPool->cond,&pthreadPool->mutex);
}
LOGRECORD(INFO,"childthread gets a task !!");
int netfd = pthreadPool->taskQueue.pfront->fd;
Dequeue(&pthreadPool->taskQueue);
ERROR_CHECK(netfd, -1, "Dequeue");
// 记录用户的信息
userProcess_t usr;
bzero(&usr,sizeof(usr));
bzero(&usr.stack,sizeof(usr));
strcpy(usr.initPath,"/home/alopex/wangpan");
memcpy(usr.outPath,usr.initPath,strlen(usr.initPath));
initStack(&usr,usr.initPath);
while(1){
int ret = execCommand(netfd, &usr);
if(ret == -1){
break;
}
}
}
return NULL;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化