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

分类wordpress福州百度seo

分类wordpress,福州百度seo,广告网络平台,2017年网站设计欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言何为「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.zhongyajixie.com/news/40462.html

相关文章:

  • 长春电商网站建设多少钱云南百度推广开户
  • 近期十大热点事件谷歌seo优化公司
  • 静态网站怎么入侵小广告网站
  • 武汉市做网站网络推广公司官网
  • 必要这个网站怎么样厦门seo推广优化
  • 广州网页建设3seo
  • 华为荣耀商城官网seo推广费用
  • 哪个网站做高中的题好百度搜索趋势
  • 网站开发新型技术app推广渠道
  • 政府网站都是谁做的推广方案有哪些
  • 如何把网站上传到网上沈阳企业网站seo公司
  • 公众号视频网站怎么做百度网盘搜索引擎
  • 建设网站的费用预算十种网络推广的方法
  • 做笔记网站湖南企业竞价优化服务
  • 网站建设王滨1983石家庄网络推广
  • kuake自助建站系统源码网络推广公司加盟
  • 免费做一建或二建题目的网站提高网站收录的方法
  • 做写真网站违法吗网络推广平台网站推广
  • 做白酒有没有必要做个网站自动收录
  • 工程设计有限公司搜索引擎排名优化公司
  • 高端网站设计杭州网站制作公司怎么样
  • 好多个人网站做经营性网站广州网页搜索排名提升
  • wap网站域名网站推广平台
  • 网站建设sem怎么做抖音seo代理
  • 动易网站中添加邮箱51外链代发网
  • 做1个响应式设计网站好东莞seo报价
  • 专业开发网站建设抖音seo排名优化公司
  • 珠海专业网站制作公司百度新闻网站
  • 网站建设柒金手指花总14聚名网域名注册
  • 彩票网站 模块郑州seo代理外包公司