小编Raj*_*aja的帖子

内存SPIKE - 提升ASIO ASYNC读取

写了一个只从客户端读取数据的服务器:

使用boost :: array buffer

启动服务器和系统监视器显示1MB的使用情况.

1.)只需执行async_read_some并执行handleRead,我再次调用asyncRead函数.

void asyncRead() {
    m_socket->async_read_some(
        boost::asio::buffer(m_readBuffer, READ_BLOCK_SIZE),
        m_strand->wrap(boost::bind(&ConnectionHandler::handleRead,
                                   shared_from_this(),
                                   boost::asio::placeholders::error,
                                   boost::asio::placeholders::bytes_transferred))
    );
}
Run Code Online (Sandbox Code Playgroud)

在handleRead我验证是否有任何错误,如果没有,我只是发出另一个asyncRead().

2.)保持发送帧(大小约102字节的数据).

在10000帧的测试结束时.总发送大小= 102*10000总读取大小= 102*10000

但是,系统监视器中的内存使用量高达7.8 Mb.

无法弄清楚这种增加的原因.尝试的不同方面是:1.)正在进行的连接数量 - 仅1. 2.)已验证关闭连接 - 是的.3.)甚至停止了ioServic,但仍然没有变化.

在客户端的第二次运行中,我看到内存在增加.可能是这样的?我使用的是boost :: array,这是一个堆栈变量,只是阅读.没有其他地方有一个缓冲区被初始化.

c++ boost boost-asio

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

MongoDb变量到字符串

在MongoDb Shell中

db.keyword.update({"state":"UT"}, {$unset:{'abc.def':1}}); 
Run Code Online (Sandbox Code Playgroud)

unsets从abc中删除def.但是,如果我这样做:

var key = 'def'

var key1 = 'abc.'+key 
db.keyword.update({"state":"UT"}, {$unset:{key1:1}}); 
Run Code Online (Sandbox Code Playgroud)

并没有取消def.

如何通过传递key1来取消设置"abc.def"?

string variables mongodb

2
推荐指数
1
解决办法
848
查看次数

Erlang - 如果有其他条件

试图计算得分并将其维持在0.2到1.5之间.以下代码是否有效?我不希望它返回,但继续进一步.

     ok = if
       Score > 1.5 ->
         Score = 1.5;
       true ->
         ok
     end,
      ok =   if
             Score < 0.2 ->
                 Score = 0.2;
             true ->
                 ok
         end,
    put(score, Score),
Run Code Online (Sandbox Code Playgroud)

erlang if-statement

0
推荐指数
1
解决办法
404
查看次数

标签 统计

boost ×1

boost-asio ×1

c++ ×1

erlang ×1

if-statement ×1

mongodb ×1

string ×1

variables ×1