接收数据会导致文件打开太多


荀彧.
2024-12-18 05:50:57 (3月前)
  1. 在我的客户端,我通过ZeroMQ收到了很多输入,需要不断更新。我的服务器是用python编写的,但这不重要。这就是我在MainActivity中所做的:

上市 …

3 条回复
  1. 0# Frui tenebris、 | 2019-08-31 10-32



    你有一个泄漏,因为你没有关闭/结束/释放一些东西。一世

    认为

    必须终止上下文:

    context.term()

    关闭请求者后……


  2. 1# 5678 | 2019-08-31 10-32



    好吧,在

    设计,信令/消息设置成本的基础设施是不可忽视的。一些用例更有效,有些则更少。



    永远是新的


    Context()

    </强>
    每个方法调用一个实例,然后通过清理调用立即将其抛出


    .term()

    *
    </强>

    1. - 方法肯定比拥有一个挂式应用程序或冷冻设备更好,但它远非公平的设计,尊重过程延迟和“生态”资源。



    最好先建立一个半持久的资源基础设施(每个

    Context()

    -instance通常是一个非常昂贵的玩具来实例化(截至2018年至第一季度的API 4.2+),对于

    Socket()

    1. - 实例,但类似于
    2. <code>
    3. Poller()
    4. </code>
    5. 它的所有内部AccessPoints)注册挂钩,但原则可能也扩展到'em)。



    对代码的早期重新分解将有助于不使用昂贵的资源作为“可消耗的一次性”来扩展案例。



    这部分:




    1. while (true) {
      try {
      ZMQ.Context context = ZMQ.context(1);

    2.                 //                     Connect to server
    3.                 ZMQ.Socket requester = context.socket( ZMQ.REQ );
    4.                 String address = "tcp://xxx.xx.xx.xx";
    5.                 int port = 5000;
    6.                 requester.connect( address + ":" + port );
    7.                 ...
    8.          }
    9.          ...
    10.   }
    11. </code>


    这是一种资源破坏性的反模式,总是存在重复的延迟,甚至是远程挂断和远程拒绝以及类似问题的风险。


登录 后才能参与评论