- 博客(4)
- 收藏
- 关注
原创 多线程同步
同步手段:mutex、自旋锁、原子操作、条件变量、信号量、barrier(内存屏障)mutex:尝试获取锁,如果获取不到,内核将此线程放入队列、此线程休眠、当锁释放后,内核将mutex取出自旋锁:一直处于忙的状态,相对于Mutex不会挂起,此线程一直检测锁是否释放,释放获取锁,效率比mutex高,因为没有从挂起状态到运行状态的切换CAS的原子操作:在任意时刻又且仅能有一个线程对某个变量操作...
2018-12-10 21:01:36 131
原创 epoll的监听多个fd的read和send操作
核心代码如下m_bRunning = true; // first let's increase the limit of open files int maxconn = 100000; struct rlimit srl; srl.rlim_cur = maxconn + 10; srl.rlim_max = maxconn + 10; if (setrlimit(RLIM...
2018-12-06 21:11:05 2155
原创 服务器关闭客户端连接操作
所有玩家的数据都保存在map<fd, NetCache>里边,玩家在登陆成功后,会将fd和NetCache保存起来,同时将fd设置在玩家自己的身上,那么在什么时机会关闭fd连接呢?关闭连接操作如下void NetHandler::doCloseConnection(int fd){ if (fd > 0) { FD_CLR(fd, &...
2018-12-05 11:22:46 3532
翻译 Reactor模式处理高并发
1、epoll的同步编程方式如果是listenfd,那么放入epoll继续监听如果是可读fd,那么读取fd,并且处理读时间int main(int argc, char** argv){epoll_ctr(efd, ADD, fd);while(1){ epoll_wait(, event, ....); for(;;) { if(fd == listenr_scoket)...
2018-12-04 21:30:23 771
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人