WebServer
WebServer copied to clipboard
old_version_0.1中handle_events()如何执行到threadpool_add()函数
大佬!您好! 我想请问下,在old_version_0.1的handle_events()中,到底如何才能执行threadpool_add()函数啊?我才用单步调试的时候一直执行if语句,无法执行到这个函数,但全速运行的时候却执行了!请大佬指点以下!万分感谢! 函数如下所示:
`// 分发处理函数 void handle_events(int epoll_fd, int listen_fd, struct epoll_event* events, int events_num, const string &path, threadpool_t* tp) { for(int i = 0; i < events_num; i++) { // 获取有事件产生的描述符 requestData* request = (requestData*)(events[i].data.ptr); //从events结构体的ptr指针中获取传递的参数 int fd = request->getFd();
// 有事件发生的描述符为监听描述符
if(fd == listen_fd)
{
//cout << "This is listen_fd" << endl;
acceptConnection(listen_fd, epoll_fd, path);
}
else
{
// 排除错误事件
if ((events[i].events & EPOLLERR) || (events[i].events & EPOLLHUP)
|| (!(events[i].events & EPOLLIN)))
{
printf("error event\n");
delete request;
continue;
}
// 将请求任务加入到线程池中
// 加入线程池之前将Timer和request分离
request->seperateTimer();
int rc = threadpool_add(tp, myHandler, events[i].data.ptr, 0); // 怎么才会执行这一步函数?感觉无法执行到!
}
}
}`
要有个请求来了,并且有消息过来了,不如你把断点就打到threadpool_add上
要有个请求来了,并且有消息过来了,不如你把断点就打到threadpool_add上
这一块理解啦 谢谢!