小编Don*_*lan的帖子

提升asio同步与异步操作性能

这有点类似于boost :: asio异步性能.由于该问题没有确凿的答案,我发布了一个类似的问题,包含示例代码和统计信息以证明问题.

下面,我对同步和异步服务器应用程序进行了示例,它们在一个循环中连续向客户端发送25字节的消息.在客户端,我正在检查它能够以什么速率接收消息.样本设置非常简单.在同步服务器的情况下,它为每个客户端连接生成一个新线程,并且线程继续在循环中发送25字节的消息.在异步服务器的情况下,它每个客户端连接产生一个新线程,并且线程继续使用异步写入(主线程是调用的线程)在循环中发送25字节的消息ioservice.run().对于性能测试,我只使用一个客户端.

同步服务器代码:

#include <iostream>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
#include <boost/asio.hpp>
#include <boost/thread.hpp>

using boost::asio::ip::tcp;

class tcp_connection : public boost::enable_shared_from_this<tcp_connection>
{
public:
    typedef boost::shared_ptr<tcp_connection> pointer;

    static pointer create(boost::asio::io_service& io_service)
    {
       return pointer(new tcp_connection(io_service));
    }

    tcp::socket& socket()
    {
        return socket_;
    }

    void start()
    {
        for (;;) {
            try {
                ssize_t len = boost::asio::write(socket_, boost::asio::buffer(message_));
                if (len != message_.length()) {
                    std::cerr<<"Unable to write all the bytes"<<std::endl;
                    break;
                }
                if (len == -1) {
                    std::cerr<<"Remote …
Run Code Online (Sandbox Code Playgroud)

c++ boost-asio

5
推荐指数
1
解决办法
2968
查看次数

标签 统计

boost-asio ×1

c++ ×1