设为首页 加入收藏

TOP

Epoll模型详解(五)
2011-12-14 13:02:01 】 浏览:19584
Tags:Epoll 模型 详解
;      
char line[MAXLINE];

};

 

// 线程的任务函数

void * readtask(void *args);

void * writetask(void *args);

// 声明 epoll_event 结构体的变量 ,ev 用于注册事件 , 数组用于回传要处理的事件

struct epoll_event ev, events[20];

int epfd;

pthread_mutex_t mutex;

pthread_cond_t cond1;

struct task *readhead = NULL, *readtail = NULL, *writehead = NULL;

void setnonblocking(int sock)

{

         int opts;

         opts = fcntl(sock, F_GETFL);

         if (opts < 0)

         {

                   perror("fcntl(sock,GETFL)");

                   exit(1);

         }

         opts = opts | O_NONBLOCK;

         if (fcntl(sock, F_SETFL, opts) < 0)

         {

                   perror("fcntl(sock,SETFL,opts)");

                   exit(1);

         }

}

int main()

{

         int i, maxi, listenfd, connfd, sockfd, nfds;

         pthread_t tid1, tid2;

 

         struct task *new_task = NULL;

         struct user_data *rdata = NULL;

         socklen_t clilen;

 

         pthread_mutex_init(&mutex, NULL);

         pthread_cond_init(&cond1, NULL);

         // 初始化用于读线程池的线程

 

         pthread_create(&tid1, NULL, readtask, NULL);

         pthread_create(&tid2, NULL, readtask, NULL);

 

         // 生成用于处理 accept  epoll 专用的文件描述符

         epfd = epoll_create(256);

 

         struct sockaddr_in clientaddr;

         struct sockaddr_in serveraddr;

         listenfd = socket(AF_INET, SOCK_STREAM, 0);

         //  socket 设置为非阻塞方式

         setnonblocking(listenfd

首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/13/13
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇libevent C 事件通知接口函数库 下一篇linux的epoll模型详解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目