基本组件
文章平均质量分 78
古德jiò
这个作者很懒,什么都没留下…
展开
-
手写死锁检测组件
死锁概念 多个进程或线程互相等待对方的资源,在得到新的资源之前不会释放自己的资源,这样就形成了循环等待,这种现象被称为死锁。四个产生原因(都需要满足): 1、资源互斥:资源只有两种状态,只有可用和不可用两状态,不能同时使用,同一时刻只能被一个进程或线程使用。 2、占有且请求:已经得到资源的进程或线程,继续请求新的资源,并持续占有旧的资源。 3、资源不可剥夺:资源已经分配进程或线程后,不能被其它进程或线程强制性获取,除非资源的占有者主动释放。 4、环路等待:死锁发生时,系统中必定有两个或两个以上.原创 2022-01-24 20:21:54 · 235 阅读 · 1 评论 -
定时器方案(一)之红黑树与最小堆 详解
前言定时器应用为什么不直接用epoll_wait中的timeout来做定时呢? 因为epoll是会调用内核,多少会有一定的延迟,对于实时性要求很高的任务来说,是不可取的。定时发送信号定时器误差大(如上述所说的epoll_wait中设置timeout)该如何处理?利用定时发送信号来处理,即通过绑定和发送信号的方式,可以立刻进行定时器操作。定时器数据结构当有大量定时任务要处理时,需要引入数据结构,用epoll_wait不是最优解。常见的数据结构有红黑树、最小堆和时间轮设计需要提供以下API:原创 2022-01-20 21:23:20 · 914 阅读 · 0 评论 -
定时器方案(二)之时间轮原理 详解
时间轮类似于时钟,秒针走一圈,分针前进一格单层级的时间轮用于实现时间窗口(如tcp滑动窗口)的限流与熔断假设检测5秒内是否有100次操作限流: 每秒都查看最近五秒是否有100次操作熔断:每过五秒查看这五秒有没有100次操作显而易见的,限流更加准确,但是很耗费时间,熔断没那么准确,但是相对来说没那么耗时间熔断的应用: DDos攻击: 客户端不断发送大量数据给服务器的过程为DDos攻击 解决办法: 在网络底层用DPDK判断 在应用层用熔断机制判断规定时间内客户端发送的数据包是否.原创 2022-01-20 20:25:09 · 1960 阅读 · 0 评论