问题标签 [pooling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9134 浏览

java - 线程池与许多单独的线程

我正处于一个问题之中,我无法决定采用哪种解决方案。

这个问题有点独特。这么说吧,我不断地从网络接收数据(每秒 2 到 4 次)。现在每个数据都属于一个不同的,比如说,组。现在,让我们将这些组称为 group1、group2 等。

每个组都有一个专用的作业队列,来自网络的数据被过滤并添加到相应的组中进行处理。

起初,我为每个组创建了一个专用线程,该线程将从作业队列中获取数据,对其进行处理,然后进入阻塞状态(使用链接阻塞队列)。

但是我的学长建议我应该使用线程池,因为这样线程不会被阻塞,并且可以被其他组用于处理。

但事情是这样的,我获取的数据足够快,线程处理它所花费的时间足够长,线程可能不会进入阻塞模式。这也将保证数据按顺序处理(作业 1 在作业 2 之前完成),在池中,这种情况很少发生,可能不会发生。

我的学长也坚持这样一个事实,即池化也会为我们节省大量内存,因为线程是 POOLED 的(我认为他真的很喜欢这个词;))。虽然我不同意这一点,因为我个人认为,是否每个线程都获得了自己的堆栈内存。除非线程池中有我不知道的东西。

最后一件事,我一直认为汇集有助于短期内大量出现工作。这是有道理的,因为线程生成会导致性能下降,因为初始化线程所花费的时间远远超过完成工作所花费的时间。因此,池化在这里有很大帮助。

但在我的情况下,group1、group2、...、groupN 始终保持活动状态。因此,无论是否有数据,它们仍然会存在。所以线程生成不是这里的问题。

我的上级不相信,并希望我使用池解决方案,因为它的内存占用很大。

那么,该走哪条路呢?

谢谢你。

0 投票
0 回答
161 浏览

javascript - 在原型而非经典 JavaScript 中实现对象池的资源

快速提问(稍微费力地建立起来)....

Douglas Crockford 和 Stoyan Stefanov 在他们的 JavaScript 书籍中都强烈鼓励在实施 JavaScript 项目时远离经典(基于类)范式,并利用其原型设计。

我觉得这很吸引人,因为它看起来像你在类型安全和优化方面的松懈,你应该能够通过灵活性和可维护性来获得(据我了解,这是创建 Self,第一个原型语言的目标)

我需要创建一个对象池系统来控制垃圾收集器,因为我正在尝试为基于 Web 的学习材料创建尽可能接近的“实时”模拟。

我能找到的唯一开放的实现(如详细记录和评论)是 gamecore.js 库 和本教程的一部分。

此实现适用于 class.js - 一个启用经典模拟模式的库,并且在我的项目中使用它需要我使用经典模拟继承。

所以,毕竟,我的问题很简单——有没有人知道一个公开可用的对象池脚本,它没有将类模拟作为其实现的一部分?

(只是为了节省时间,建造这个东西只有两周的时间......)

先感谢您

詹姆士

金史密斯大学

0 投票
3 回答
1648 浏览

multithreading - 对象池 - 同步 - Delphi

我正在 Delphi 中实现一个对象池。我需要同步线程以从池中获取对象。

线程代码:

池代码:

CLIENT_POOL_GUARD 是一个单元变量。池运行良好,但我可以使用“uClientQueryPool.CLIENT_POOL_GUARD.Acquire();”吗 和“uClientQueryPool.CLIENT_POOL_GUARD.Release;” 在 GetClient 方法中?

像这样:

0 投票
1 回答
606 浏览

vb.net - 使用 HttpWebRequest 或类似工具扫描数百个网站

我有带有 HttpWebRequest 的 VB 代码,它收集了数百个网站的 html,但需要很长时间才能完成任务。代码基本上是一个 for-to-loop 并读取列表框中每个网站的 html。在一个循环中,在每个网站的提取的 html 中搜索特定的单词。我想显示每个单词列下都有单词的网站列表。

编译后的代码需要将近 5 分钟才能完成循环。有时它无法完成。是否可以对其进行修改以提高性能。请帮助提供更好的代码和建议。

0 投票
1 回答
16284 浏览

spring - org.apache.tomcat.jdbc.pool.DataSource 不再在 tomcat 7 dbcp jar 中?

我正在尝试使用 7.0.30 版的 tomcat-dbcp.jar 为 tomcat-dbcp 创建一个弹簧管理的独立池

然而,Tomcat 的文档(http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Standalone)中似乎提到了 org.apache.tomcat.jdbc.DataSource 类

所以这个spring bean定义根据Tomcat doc是正确的,但是当我启动应用程序时,我得到CNF异常:

我是不是超级愚蠢,在这里错过了明显的东西???

0 投票
1 回答
1074 浏览

java - 在 JAX-WS 中禁用 SSL 套接字连接池?

我想知道是否可以在 JAX-WS 中禁用套接字连接池?

我正在从 Jetty 中调用网络服务。Web 服务设计为在任何给定时间最多有两个到服务器的连接。其中一个连接是用于与服务器进行发布/订阅轮询的阻塞连接。另一个连接用于发出标准 SOAP 请求。一旦连接轮询,就不能使用其他连接进行轮询,否则服务器会返回错误。

为此,我创建了两个 SOAP 端口,其中一个用于轮询,另一个用于发出请求。在轮询器返回一些数据并且 SOAP 请求连接处于空闲状态之前,这非常有效。发生这种情况时,下次我尝试使用相同的 SOAP 端口进行轮询时,它会从连接池中选择一个连接并重用它。如果碰巧获得了 SOAP 请求连接,服务器将返回错误。从那时起,轮询器就死定了,因为我创建的任何新 SOAP 端口最终都会重用这两个连接中的一个,这两个连接都被认为对轮询无效。

一个可能的解决方案是禁用连接池,这意味着每次我创建一个新的 SOAP 端口时,它都会建立一个新的连接。要么就是这样,要么是一种获取套接字本身的方法,我可以强行关闭它。

值得一提的是,与服务器的连接是相互验证的 SSL 连接。

仅供参考,这是我尝试连接的服务器的规格:

http://www.trustedcomputinggroup.org/files/resource_files/93C23F2A-1A4B-B294-D0A36CCD8A9E7BD3/TNC_IFMAP_v2_0R0_47.pdf

任何帮助,将不胜感激!谢谢,马歇尔

0 投票
1 回答
3949 浏览

.net - 有没有办法为多个数据库重用 NHibernate SessionFactory?

就像标题所说的那样,有没有办法SessionFactory为多个数据库“重用”a?由于实例化SessionFactory需要时间,我想知道是否可以汇集这些实例并重用它们,只更改连接/数据库名称。显然,一级缓存将被清除,但我试图避免实例化工厂本身所涉及的惩罚。

背景是我可以拥有几个具有完全相同架构的小型“可插拔”数据库,因此 NHibernate 无需每次都重新构建所有映射。

0 投票
1 回答
2904 浏览

java - 如何在 Java 中进行资源池化?

我必须维护一个经常创建资源并在很短的时间内使用它们的应用程序。因此,大部分(宝贵的用户)时间都花在了创建资源上,而不是实际使用它们上。

我想将这些资源放入一个池中,以便更快地获取它们。我正在寻找允许我进行资源池(即通用对象池)的Java API。我不想重新发明轮子。

我发现Apache Commons Pool很容易在 Java 应用程序中执行此操作(到目前为止我已经阅读了示例代码)。

谷歌搜索后,除了众所周知的 C3PO、Proxool 等之外,似乎很难找到其他任何东西。那些最新的做连接池!

您知道市场上满足相同需求的其他 API 吗?

要求 :

  • 生产就绪
  • 有据可查
  • 最新版本不应超过两年
  • 接受打开/关闭源
  • 接受免费/付费许可
  • 在 Maven 存储库中可用
0 投票
2 回答
1325 浏览

java - 如何安全地关闭 GenericKeyedObjectPool?

我的应用程序中有一个GenericKeyedObjectPool。我可以使用该close方法将其关闭,但是我应该如何等待客户端将每个借用的对象返回(并且池销毁)池中?

我需要类似的东西ExecutorService.awaitTermination

0 投票
1 回答
852 浏览

linux - 在 linux 的接口上获取传入/传出带宽速度的快照?

我们想知道如何快速获取 3 秒快照,了解 Linux 中特定接口上的带宽消耗速度有多快?

我们有一些网络服务,我们想根据给定时刻使用的传入/传出带宽委托给各种后端。

我们的后端是用 PHP 编写的,但理想情况下我们可以通过 CLI 运行(例如:我们可以在 php 中执行的 linux 命令行应用程序等)。一旦我们在 php 中获得了信息,我们就可以从那里获取它。

谢谢。