当前位置: 首页 > news >正文

上海响应式网站建设公司投资公司取名字大全

上海响应式网站建设公司,投资公司取名字大全,临淄信息网123,珠海移动网站定制欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言何为「muduo库」安装muduo库阻塞、非阻塞、同步、异步数据准备数据准备 引言 从本篇博客开始,我会陆续发表muduo库源码分析的相关文章。感谢大家的持续关注!!…

欢迎来到 破晓的历程的 博客

⛺️不负时光,不负己✈️

文章目录

    • 引言
    • 何为「muduo库」
    • 安装muduo库
    • 阻塞、非阻塞、同步、异步
      • 数据准备
      • 数据准备

引言

从本篇博客开始,我会陆续发表muduo库源码分析的相关文章。感谢大家的持续关注!!

何为「muduo库」

muduo库是 陈硕 大神个人开发的 C++ 的 TCP 网络编程库。muduo 基于 Reactor 模式实现,Reactor 模式也是目前大多数 Linux 端高性能网络编程框架和网络应用所选择的主要架构,例如 Redis 和 Java 的 Netty 库等。

注意:目前muduo库仅可以在Linux环境下使用,因为:陈硕大师在写muduo库时,不考虑可意志性,不跨平台,只支持Linux,不支持windows。

安装muduo库

这里我贴一篇安装muduo库的详细教程:muduo库的安装和使用

为了让大家了解muduo库使用起来是如何的方便,我写一段示例代码,用不到20行的代码量快速构建一个Linux环境下的TCP服务器

#include<muduo/net/TcpServer.h>
#include<muduo/net/EventLoop.h>
#include<iostream>
using namespace muduo;
using namespace muduo::net;
using namespace std;
void onMessage(const TcpConnectionPtr &conn,Buffer *buf,Timestamp time)
{conn->send(buf);
}
int main()
{EventLoop Loop;InetAddress listenAddr("127.0.0.1",6000);TcpServer server(&Loop,listenAddr,"chatServer");server.setMessageCallback(onMessage);server.start();Loop.loop();
}

我们可以用telnet充当客户端,连接服务器,进行通信,这段代码的效果是:服务器将客户端发来的数据再发送给客户端。

如果我们使用网络通信AP创建套接字,然后通信的话,代码量肯定远不止20行,所以这就是使用网络库封装的函数的显著效果。可能大家看这段代码会一脸懵。别担心,我刚一开始接触这个库的时候也是如此,当我们认真学习了muduo库,我们不禁会发现:陈硕大神设计的太妙了。

阻塞、非阻塞、同步、异步

一个典型的IO过程分为哪两个阶段? 数据准备和数据读取

数据准备

根据系统IO操作的就绪状态,分为:

  • 阻塞状态

  • 非阻塞状态

大家都使用过recv这个系统API接口。这个接口默认就是阻塞式读取数据。那么阻塞式等待数据就绪时是什么表现呢?

当数据没有准备好时,recv会阻塞式等待,造成该线程什么也做不了,就造成了线程阻塞。

但是我们可以通过系统接口将一个文件描述符设置为非阻塞状态「由于这不是本篇博客的重点,这里就不再详细介绍这个过程了」那么非阻塞等待数据就绪有什么表现呢?

1.当数据没有准备好时,recv会返回-1,同时将error设置为 EAGAIN 「表示数据还没有准备就绪,但没有发生错误」
2.当读取操作发生错误时,读取失败,recv返回0.
3.当读取成功时,返回读取数据的数量「字节数」。

数据准备

根据应用程序和内核的交互方式,分为:

  • 同步

  • 异步

对于同步读取数据而言,代表函数就是recv。当数据读取时,线程阻塞等待,消耗的时间属于应用程序。然后将数据从内核缓冲区搬到应用程序的缓冲区


对于异步读取数据时,我们关系的是将数据从操作系统内核缓冲区搬到应用层缓冲区,于是就将这一需求告诉操作系统,让操作系统完成这件事情,等到完成之后,再让其用我们注册的通知函数,通知应用程序,此时读取数据花费的时间就不属于应用程序,而属于操作系统了,在操作系统读取数据期间,应用程序线程可以做其他事情,等到数据读取完毕,应用程序只负责对数据进行处理就可以了。

Tips:异步通知中,我们通常使用回调函数的方式进行通知

http://www.yayakq.cn/news/437797/

相关文章:

  • 网站怎么怎么做关键字北京网站优化效果怎样
  • 网站制作不用备案杭州专业的网站制作成功案例
  • 门户网站的建设公司一般的学校网站怎么做
  • 用jsp实现网站开发的流程c# 网站开发实例教程
  • 网站建设高端勒流有做网站的吗
  • 导购类网站备案网站上传wordpress
  • 哪个旅游网站做的比较好会计培训班初级费用
  • 可以自己做安卓app的网站网站建设基本情况介绍
  • 企业网站建设长沙app软件程序开发
  • 天津网站建设制作品牌公司WordPress 转发文章 配图怎么办
  • 教你学做窗帘的网站校园网站设计与实现
  • 网站优化如何收费wordpress搜索乱码
  • 长春百度网站排名优化轴承 网站建设 企炬
  • ups国际快递网站建设天津网站建设有哪些
  • 请柬网站开发最新新闻摘抄
  • 零基础网站建设教程大型资讯门户网站怎么做排名
  • seo网站优化外包lnmp wordpress 数据库
  • 获取网站访客qq代码泸州市住房和城乡建设厅官方网站
  • 网站主机购买互联网推广的方式
  • 做网站最基本网络管理系统有哪些
  • 建设网站平台的章程网站搭建工作怎么样
  • 网站系统免费网页设计师培训费用
  • 网站导航栏设计息烽做网站公司有哪些
  • 网站被别人备案鹤壁做网站的公司
  • 设计网站大全软件青海省城乡建设网站
  • 网站后台界面wordpress 最近文章
  • 天水市建设银行官方网站哪个网站可以做分销
  • 网站建站销售怎么做wordpress 登录框
  • 做网站 指导青岛外贸网站建站
  • wordpress网站360搜索收录网站建设怎么链接表格