这只是一个线程池的框架还有许多不足 : 没有实现server->client数据发送 , 还有许多细节没有完善。 Lock.cpp : 锁的操作 , 读锁可以并发 , 写锁独占. Queue.h : 队列的封装 , 队列的读和写都加了锁的保护. Socket.cpp : 套接口的简单封装. Thread.cpp : 线程的封装实现了些简单的线程停止,运行等功能 , 启动别的线程的时候需要继承次类. Worker.cpp : 用户接口类 , 用户需继承此类。 ListenThread.cpp(继承Threa...
by ruchong - C/C++ - 2012-11-12 13:42:07 阅读(25881) 回复(34)
上篇文章使用linux内核2.6提供的epoll机制实现了一个反应式echo服务器,使用反应式服务器的最大好处就是可以按cpu的数量来配置 线程池内线程的线程数而不是根据客户端的并发量配置线程池。我是第一次使用pthread库来写线程池,使用的是工作队列方式的线程池。我感觉作队列方式 的线程池可以当成一种设计模式来用的,在很多平台上都是可以按这种方式来实现线程池,从win32 ,unix到jvm都是适用的 #include #include #include #...
多线程和epoll 问题, epoll_wait 不返回
设计的思想是这样的。
起一个子线程,这个线程称会不断建立与服务器的连接。
主线程则会 不断在epoll_wait 等待返回然后处理。 我这里epoll_wait 不返回。
通过网络监控 发现 子线程的的连接应该建立起来了
有三步握手了。 但我的程序一直不返回
还有2点 read write 的 阻塞和非阻塞有什么区别吗?
connect 的阻塞和非阻塞有什么区别?
[code]#include
一个线程epoll_wait,而另一线程epoll_ctl将fd添加进来,或修改fd对应的事件。不知道这样做是否没问题。
问2个select/epoll和多线程的问题 1. select 是进程限定fd数,还是线程限定fd数. 假如我创建1025个线程,每个线程管一个TCP连接。用select是否可以 2. 很多描述epoll优点的,都是基于 使用一个线程epoll所有TCP连接 这种情况。 我的程序是使用多线程,一个线程epoll一个TCP连接。这样 epoll相对select还有没有优势
epoll 多线程使用问题 关于epoll 的基本用法,我相信大家很熟悉 简单描述一下 在epoll过程中, 我们基本是epoll_wait 等待到我们 想要的事件, 并且从epoll 返回的event 里面 找出事件,找到相应 的socket 和 unit, 进行操作 我简单描述一下 我的做法 map socket, void * socket 代表 目前的socket void * 代表 和它相关的unit 对象 当unit 希望等待socket 获取数据, 那么 我们首先将socket ,和...
请问多个线程,一个线程跑一个epoll接受客户的数据。 1:开比较少的线程 , 每个线程接受的socket多一些. 2:开比较多的线程 , 每个线程接受的socket 少一些。 (是不是这样每个epoll在epoll_wait中的循环会降低效率) 谢谢........ 大家说哪一种相对比较好。
大家好,我想问下,能否在不同的线程中使用epoll_wait和epoll_ctl? 比如: thread1(void *) { .... epoll_wait(); ....... } thread1这个时候正在等待epoll_wait的返回。 而另外一个线程这时候调用epoll_ctl添加一个handle进来,或者是改变已经在epoll_wait集合中的某handle的事件。 那么epoll_wait返回的会是正确的事件吗?这里需要有同步吗,是否只能在两个epoll_wait之间进行epoll_ctl操作? 这个问题一直困惑...,在单C...