自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 线程同步机制——POSIX信号量、互斥量、条件变量

信号量#include<semaphore.h>int sem_init(sem_t* sem, int pshared, unsigned int value);int sem_destory(sem_t* sem);int sem_wait(sem_t* sem);int sem_trywait(sem_t* sem);int sem_post(sem_t* sem);...

2019-09-26 19:13:55 353

原创 定时器详解(定时器链表、时间轮、时间堆)

定时器(linux)网络程序需要处理定时事件,比如定期检测一个客户连接的活动状态。服务器通常管理着众多定时事件,因此有效的组织这些定时事件,使之能在预期的时间点被触发且不影响服务器的主要逻辑,对于服务器性能有着至关重要的影响。为此我们要将每个定时事件分别封装成定时器,并使用某种容器类数据结构,比如链表、排序链表和时间轮,将所有定时器串联起来,以实现对定时事件的统一管理。LINUX提供了三种定时...

2019-09-19 21:13:37 2039 1

原创 统一事件源

统一事件源事件源1.定时器的超时事件(本质上依靠信号SIGALARM)2.信号3.数据读4.数据写5.网络异常信号是一种异步事件:信号处理函数和程序的主循环是两条不同的执行线路。很显然,信号处理函数需要尽可能快地执行完毕,以确保该信号不被屏蔽太久。一种典型的解决方案是:把信号的主要处理逻辑放到程序的主循环中,当信号处理函数被触发时,它只是简单地通过通知主程序接受到的信号,并把信号传递...

2019-09-16 22:55:00 350

原创 epoll中ET与LT工作模式

epoll的基本概念和函数当我们采用I/O复用函数时(select, poll, epoll),我们都将套接字设置为非阻塞的。man 2 select[BUGS]:Under Linux, select() may report a socket file descriptor as “ready forreading”, while nevertheless a subsequent r...

2019-09-12 15:55:55 413

原创 EPOLLONESHOT事件

我们先从epoll谈起可以看看之前我的博客EPOLLONESHOT事件我们使用ET模式下工作,一个socket上的某个事件还是可能被多次触发。这在并发程序中就会引起一个问题。比如一个线程(或进程)在读取完某个socket上的数据后开始处理这些数据,而在数据处理的过程中该socket上又有新数据可读(EPOLLIN再次触发),此时另外一个线程被唤醒来读取这些新的数据。于是就出现了两个或多个线程...

2019-09-12 15:23:04 554

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除