
linux网络编程
ForBestSelf
后端开发程序猿养成中
展开
-
一种基于最小堆和epoll的高性能定时器——时间堆
(1)时间堆的原理 定时器以到期时间作为排序值,存放于最小堆这种数据结构中。时间堆不以固定的频率来查询是否有定时器到期,而是每次当堆顶的定时器到期后才处理一次定时事件,避免了定期查询导致的开销。(2)难点分析及解决思路Q:如何确定堆顶定时器是否到期?A:仍然以定时的方式来提醒进程或线程有定时器到期,但定时时长是变化的,其值始终等于堆顶定时器到期的绝对时刻,与定时时刻之...原创 2020-04-04 20:49:14 · 893 阅读 · 0 评论 -
带有时间轮定时器的异步进程池的实现
此进程池是在《linux高性能服务器编程》—— 一种高效的异步进程池的实现基础上结合一种高性能定时器——时间轮的实现改造而来。(1)进程池框架(2)源代码及注释#ifndef PROCESSPOOL#define PROCESSPOOL#include <sys/types.h>#include <sys/socket.h>#include ...原创 2020-03-31 21:31:15 · 182 阅读 · 0 评论 -
一种高性能定时器——时间轮的实现
(1)时间轮样貌(2)源代码及注释#ifndef TIME_WHEEL#define TIME_WHEEL#include <stdio.h>#include <math.h>template <typename T> //T是客户类,应包含定时器class tw_timer //定时器类{public: int rot...原创 2020-03-31 19:14:34 · 329 阅读 · 0 评论 -
《linux高性能服务器编程》—— 三种线程同步机制的包装类:POSIX信号量、互斥锁和条件变量
(1)POSIX信号量:提供对共享资源的独占式访问以下使用未命名信号量作为包装类的核心。#include <semaphore.h>class sem{private: sem_t semp; //信号量public: sem() { //初始化一个信号量,第2个参数=0则表示此信号量为本进程所有,否则可在多个进程间共享 ...原创 2020-03-31 17:53:40 · 236 阅读 · 0 评论 -
《linux高性能服务器编程》—— 一种高效的异步线程池的实现
此文与《linux高性能服务器编程》—— 一种高效的半同步/半异步进程池的实现 是姊妹篇。(1)线程池框架(2)源代码及注释#ifndef THREADPOOL #define THREADPOOL#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>...原创 2020-03-29 23:31:52 · 239 阅读 · 0 评论 -
《linux高性能服务器编程》—— 一种基于共享内存的多进程聊天室服务器的实现
(1)程序框架(2)源代码及注释原创 2020-03-29 13:41:19 · 460 阅读 · 0 评论 -
《linux高性能服务器编程》—— 一种多个独立进程共享内存的方式
(1)先给出代码#include <sys/mman.h>#define BUFFER_SIZEint shmfd; //文件描述符char* share_mem; //指向共享内存的起始地址const char* shm_name = "/my_shm"; //文件名shmfd = shm_open(shm_name, O_CREAT | O_RDWR, 0666...原创 2020-03-28 21:54:56 · 162 阅读 · 0 评论 -
《linux高性能服务器编程》—— 一种高效的异步进程池的实现
(1)进程池框架(2)基于面对对象设计的实现思路首先思考一下主进程和各工作进程需要哪些数据:主进程:1. 进程池中工作进程的最大数量;2. 工作进程的实际数量;3. 保存有...原创 2020-03-27 14:39:57 · 308 阅读 · 0 评论