Design patterns 它是一种并发编程模式吗?

Design patterns 它是一种并发编程模式吗?,design-patterns,concurrent-programming,Design Patterns,Concurrent Programming,一些面向对象的设计出现在我的脑海中。它就像一个游泳池和一个工厂 工厂创建可在多个线程之间共享的资源。 一个资源实体是昂贵的,创建它需要很多时间。 一个资源可以同时由多个线程使用 在我的特殊情况下,资源是SSH连接。SSH连接使用一个TCP套接字。 但是一个SSH连接可以有多个会话。 每个线程都为自己创建新会话。 会话创建不需要使用工厂 多个线程可以尝试与同一远程主机交互 我定义了资源的状态: init某些线程试图获取SSH连接,但该连接不存在。 创造资源有一个漫长的过程。如果另一个线程将尝试 若

一些面向对象的设计出现在我的脑海中。它就像一个游泳池和一个工厂

工厂创建可在多个线程之间共享的资源。 一个资源实体是昂贵的,创建它需要很多时间。 一个资源可以同时由多个线程使用

在我的特殊情况下,资源是SSH连接。SSH连接使用一个TCP套接字。 但是一个SSH连接可以有多个会话。 每个线程都为自己创建新会话。 会话创建不需要使用工厂

多个线程可以尝试与同一远程主机交互

我定义了资源的状态:

init某些线程试图获取SSH连接,但该连接不存在。 创造资源有一个漫长的过程。如果另一个线程将尝试 若要获得相同的资源,它将获得所需的资源正在进行中 第二个线程等待通知

所有空闲会话都已关闭,并且没有线程使用SSH连接

忙-至少有一个线程占用了SSH连接

关闭的tcp套接字被破坏

有一个资源的状态图:

  • ->初始化->忙->空闲->关闭

    空闲->忙

我读过关于OOP模式、企业应用程序模式、并发模式的书 但我记不起我上面描述的情况了

SSH只是一个例子。此模式适用于任何支持 同时工作。当第二个线程想要获取创建资源但不创建 资源的第二个实例是胡说八道

如果这是一种模式,那么他叫什么名字?
我相信这个设计已经在某个地方被描述过了。

我知道了,您必须解决“连接池”的问题。 连接池是“池模式”的实现

与模式(我看到的)不同的是,在您的实现中,会话的用户知道一些关于连接和池的内容的混乱

对我来说,如果用户从会话池中订购一个会话并将其返回给它,则似乎有一种更“模式方式”。因此,池系统知道是否需要连接,并且创建/销毁机制对用户是透明的。 用户获得“连接”,因为他有一个会话

会话创建不需要使用工厂

这可能是真的,但会话的生命周期对连接的生命周期至关重要。因此,我将负责创建/销毁池,而不是使用对象