- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 两种高效的事件处理模型—Reactor和Proactor
随着网络设计模式的兴起,Reactor和Proactor事件处理模式应运而生。同步I/O模型通常用于实现Reactor模式,异步I/O模型则用于实现Proactor模式。一、Reactor(反应堆/器)Reactor 是这样一种模式,它要求主线程(I/O处理单元,下同)只负责监听文件描述上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑单元,下同)。除此之外,主线程不做任何其他实质性的工...
2019-06-01 14:58:06 1003
原创 I/O多路复用:select、poll、epoll
I/O多路复用I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。通常,网络程序在下列情况下需要使用I/O复用技术:(1)客户端程序要同时处理多个socket。比如非阻塞connect技术。(2)客户端程序要同时处理用户输入和网络连接。比如一个聊天室程序。(3)TCP服务器要同时处理监听socket和连接socket。这是I/O复用使用最多的场合。(4)服务器要同时处...
2019-06-01 09:16:34 165
原创 一致性算法—Paxos、Raft、ZAB
写在前面1、分布式系统对fault tolerence的一般解决方案是state machine replication(状态机复制)。2、分布式一致性算法的一种更准确的说法应该是:state machine replication的共识(consensus)算法。3、pasox其实是一个共识算法。系统的最终一致性,不仅需要达成共识,还会取决于client的行为。4、分布式系统中有多个节点...
2019-04-21 20:35:09 2023
原创 Posix线程的锁
Posix线程中的锁pthread是POSIX threads的简称,是POSIX的线程标准锁是实现线程同步的一种方式1、互斥锁(或称互斥量Mutex)互斥锁是用于控制多个线程对他们之间共享资源互斥访问的一个信号量。头文件:<pthread.h>类型:pthread_mutex_t函数:pthread_mutex_init(pthread_mutex_t * mutex...
2019-04-14 22:08:35 551
原创 线程和进程的概念及其通信、同步方式
1、线程1.1、线程的基本概念线程是进程中执行运算的最小单位,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。1.2、使用线程的好处(1)易于调度;(2)多线程可提高并发性:通过线程可方便有效地实现并发性,进程可创建多...
2019-04-14 22:02:47 1257
原创 分布式相关的经典理论基础
今天来讲几个概念:单体应用和分布式集群相关概念、CAP、ACID、BASE等相关理论1、单体应用、集群、分布式的相关概念「单体应用」将一个应用程序的所有功能模块都打包成一个独立的单元,部署在一台服务器上运行,对外提供服务。当业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式。「集群」 同一个业务模块,部署在多个服务器上,通过分布式调度软件(负载均...
2019-03-17 09:36:11 218
翻译 Redis 事务阅读简记
注:文章大部分摘自《Redis开发与运维》 部分内容源自自己理解,请读者 “按需获取” 一、事务相关概念介绍 1、数据库事务定义: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据...
2019-01-04 21:06:42 121
翻译 Redis Pipeline 阅读简记
一、Pipeline相关概念简介 概念1、Round Trip Time(RTT-往返时间): Redis客户端执行一条命令分为如下四个过程: (1)发送命令、(2)命令排队、(3)命令执行、(4)返回结果 其中(1)+(4)称为Round Trip Time 概念2、Redis批量操作命令: Redis提供了批量操作命令(例如mget、mset...
2019-01-02 23:12:01 241
原创 C++ 11并发介绍
注:本文内容摘自:《C++并发编程实战》——Anthony Williams著 周全等译自己将其中的精华内容摘抄出来,做以笔记,加深印象与理解!1.1何谓并发:最简单和最基本的并发,是指两个或更多独立的活动同时发生。1.1.1 计算机系统中的并发:计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。1.1.2并发的表现: 单核处理器:通过任务调度(切...
2018-02-28 21:54:14 221
原创 生产者消费者模型(多-多模型/面向对象思想实现)
本篇文章将用c++的面向对象思想,实现生产者消费者模型的代码编写。个人感悟:1、多生产者多消费者模型的共享竞争关系:对缓冲区的共享和竞争:生产者和消费者都需要对共享缓冲区进行操作,存入产品或消费产品。mtx二值信号量和条件信号量的搭配使用,可以使得生产者或消费者在第一时间获取到共享缓冲区的非满、非空的情况。同时如果缓冲区满或空时则停止对应的生产者或消费者的操作,防止死锁
2018-01-25 22:38:27 561
原创 生产者消费者模型四(多-多模型)
生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题多生产者——多消费者设计要点: 当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。 同时,多个生产者,则需要多添加一个条件变量和计数变量,用来保证多个生产者之间对消息队列的互斥访问
2018-01-24 23:25:18 493
原创 生产者消费者模型三(多-单模型)
生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题多生产者——单消费者设计要点: 当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。 同时,多个生产者,则需要多添加一个条件变量和计数变量,用来保证多个生产者之间对消息队列的互斥访问
2018-01-24 23:24:45 837
原创 生产者消费者模型二(单-多模型)
生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题单生产者——多消费者设计要点: 当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。 同样的,当缓冲区满已空,而此时消费者还想从缓冲区中取出一个新的数据项时。则让消费者睡眠,待生产者
2018-01-24 23:23:30 358
原创 生产者消费者模型一(单-单模型)
生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题本文介绍单生产者——单消费者的代码实现设计要点: 当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。 同样的,当缓冲区满已空,而此时消费者还想从缓冲区中取出一个新的数据项时。则让消
2018-01-24 23:03:42 600
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人