1.吞吐量计算示例
在《Linux多线程服务端编程使用mudouC++网络库》中使用定时器的部分介绍了两个例子:
1.Boost.Asio Timer
2.Java Netty
第2个例子模拟Java Netty流量统计,统计吞吐量(每秒字节数)和每秒接收的消息数,用到了固定间隔的定时器EventLoop::runEvery
。先来看看流量统计的server。
注:这里是测试的是单向吞吐量,因此服务端收到消息直接discard,echo client/server测试的是双向吞吐量。
muduo/examples/netty/discard/server.cc:
#include <muduo/net/TcpServer.h>
#include <muduo/base/Atomic.h>
#include <muduo/base/Logging.h>
#include <muduo/base/Thread.h>
#include <muduo/net/EventLoop.h>
#include <muduo/net/InetAddress.h>
#include <boost/bind.hpp>
#include <utility>
#include <stdio.h>
#include <unistd.h>
using namespace muduo;
using namespace muduo::net;
int numThreads = 0;
class DiscardServer
{
public:
DiscardServer(EventLoop* loop, const InetAddress& listenAddr)
: server_(loop, listenAddr, "DiscardServer"),
oldCounter_(0),
star