学习之前,先讲解下各种服务器模型,还有muduo的服务器模型

方案0:accept+read/write,阻塞,一次服务一个客户。

方案1:accept+fork,阻塞,采用多进程,长连接,并发性低,开销高,process-per-connection

方案2:accept+thread,阻塞,采用多线程,长连接,并发性中,开销中,多连接互通,thread-per-connection.

方案3:prefork,方案2的变形.

方案4:prethread,方案3的变形.

// 开始采用I/O复用

方案5:poll(reactor),无阻塞,并发性高,开销低,单线程 reactor.

方案6:reactor+thread-per-task,无阻塞,并发性中,多核,开销中,对请求开启一个线程来处理,thread-per-request。

方案7:reactor+workerthread,无阻塞,并发性中,开销中,有一个专门处理请求的工作线程。

方案8:reactor+threadpoll,无阻塞,并发性高,开销低,方案7的改版。

方案9:multiple reactors,无阻塞,并发性高,开销低,muduo网络库采用,one loop per thread。

方案10:multiple reactors+threadpoll。

方案9是muduo内置的多线程方案,有一个 main reactor 负责 accpet ,然后将接受到的连接,分发到其他 sub reactor ,采用轮换的作用,来分担,充分利用多核。one loop per thread.一般线程的数量按核数计算,固定。

时间: 2024-07-29 15:58:34

学习之前,先讲解下各种服务器模型,还有muduo的服务器模型的相关文章

Linux学习之CentOS--CentOS6.4下Mysql数据库的安装与配置【转】

如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同,就没有记录下来了,有了jdk.tomcat.eclipse我们就已经能进行我们的程序开发了,但是如果要做一个项目,哪怕是小的不能再小的项目都离不开数

Android学习笔记--design包下的两个控件

今天学习了design包下的两个控件,记录一下,首先需要我们依赖 1 compile 'com.android.support:design:25.0.0' 之后在XML文件中就可以使用了 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 x

Andorid开发学习---ubuntu 12.04下搭建超好用的安卓模拟器genymotion 安装卸载virtualbox 4.3

什么是Genymotion? Genymotion是一套完整的工具,它提供了Android虚拟环境.它简直就是开发者.测试人员.推销者甚至是游戏玩家的福音. Genymotion支持Windows.Linux和Mac OS等操作系统,容易安装和使用:按简单的安装过程,选择一款Android虚拟设备,开启后就体验Genymotion带来的快感吧.-----引自百度百科 一.下载并安装genymotion 1.下载genymotion http://www.genymotion.cn/#theme=

caffe学习(1):多平台下安装配置caffe

caffe学习(1):多平台下安装配置caffe 提到deep learning, caffe的大名自然是如雷贯耳,当然,除了caffe之外,还有很多其他的框架,如torch,mxnet...但是,就我自己这一个月的实验以及师兄的结论都是,caffe得出的实验performance要高于别的框架,可能是C++的威力吧~笑 OK,接下来准备在这个系列分享我使用和学习caffe的一些经验,首先自然是框架的配置了.这里我们分享一下在windows10和ubuntu14.04虚拟机下的Caffe配置(:

shell学习之查找当前目录下文件以及文件夹大小-&#39;du&#39;命令和&#39;df&#39;命令

经过前几天的磁盘写满的事件之后,发现自己对du这个命令完全不知道,所以下决心要学习一番. 我就当一盘搬运工吧,外网找到一个教程 'du'就是查找文件夹的大小 du Typing the above at the prompt gives you a list of directories that exist in the current directory along with their sizes. The last line of the output gives you the tot

【Linux/Ubuntu学习 14】Linux下查看文件和文件夹大小

当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结. 下面分别简要介绍 df命令可以显示目前所有文件系统的可用空间及使用情形,请看下列这个例子: 以下是代码片段: [[email protected] ~]$ df -hFilesystem

[Android学习笔记]Android向下兼

Android向下兼容的思路:使用高版本的API,在运行时判断真实运行平台的API版本,根据不同版本做不同的处理 关键类:Build.class里面定义了API版本相关信息 内部类:VERSION定义当前系统的版本信息,其中包含SDK版本信息Build.VERSION.SDK_INT可以获取到当前运行的系统的SDK版本号 内部类:VERSION_CODES定义了各个版本的枚举信息 适配时: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONE

Java学习心得之 Linux下搭建JavaWeb环境

1. 前言2. Java安装3. tomcat安装4. tomcat简单命令 一.前言 本篇博文记录了Linux下JavaWeb环境的搭建,本文内容基于以下文章: http://m.blog.csdn.net/article/details?id=7727927(ubuntu下搭建java web开发环境的详细步骤)http://blog.csdn.net/xiaoyao6650/article/details/4029946 (用Ant编译Java Web程序) 关于JavaWeb的学习资料h

CSS学习笔记四:下拉选择框以及其动画特效

以前学的只是了解了css的一些基本属性,在做项目的时候都是直接使用bootstrap响应式来写项目,这样子很方便,很快捷,但是在自己看来还是有一点缺陷的,毕竟,我很多时候不怎么清楚它里面的具体运作.所以在学习原生,一个一个小标符号学习起来,学习原生可能会让我学习到更多的东西. 学习了两种下拉框,一种是往在弹,一种是从中间往外弹. 第一种下拉框 现在学习的做东西,都是先确定好自己需要那几样东西,先把body的内容写了,再来一样一样规划样式. 1 <div class="content&quo

Android学习之listview的下拉刷新、上拉载入

本例是在上例的基础上完成的.本例实现的listview上拉载入.下拉刷新功能,是在开源网站上别人写好的listview,主要是对listview的控件进行重写,添加了footer和header. 1.listview_footer listview_footer是listview的底部. 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http