Design patterns 它是一种并发编程模式吗?
一些面向对象的设计出现在我的脑海中。它就像一个游泳池和一个工厂 工厂创建可在多个线程之间共享的资源。 一个资源实体是昂贵的,创建它需要很多时间。 一个资源可以同时由多个线程使用 在我的特殊情况下,资源是SSH连接。SSH连接使用一个TCP套接字。 但是一个SSH连接可以有多个会话。 每个线程都为自己创建新会话。 会话创建不需要使用工厂 多个线程可以尝试与同一远程主机交互 我定义了资源的状态: init某些线程试图获取SSH连接,但该连接不存在。 创造资源有一个漫长的过程。如果另一个线程将尝试 若要获得相同的资源,它将获得所需的资源正在进行中 第二个线程等待通知 所有空闲会话都已关闭,并且没有线程使用SSH连接 忙-至少有一个线程占用了SSH连接 关闭的tcp套接字被破坏 有一个资源的状态图:Design patterns 它是一种并发编程模式吗?,design-patterns,concurrent-programming,Design Patterns,Concurrent Programming,一些面向对象的设计出现在我的脑海中。它就像一个游泳池和一个工厂 工厂创建可在多个线程之间共享的资源。 一个资源实体是昂贵的,创建它需要很多时间。 一个资源可以同时由多个线程使用 在我的特殊情况下,资源是SSH连接。SSH连接使用一个TCP套接字。 但是一个SSH连接可以有多个会话。 每个线程都为自己创建新会话。 会话创建不需要使用工厂 多个线程可以尝试与同一远程主机交互 我定义了资源的状态: init某些线程试图获取SSH连接,但该连接不存在。 创造资源有一个漫长的过程。如果另一个线程将尝试 若
- ->初始化->忙->空闲->关闭 空闲->忙
我相信这个设计已经在某个地方被描述过了。我知道了,您必须解决“连接池”的问题。 连接池是“池模式”的实现 与模式(我看到的)不同的是,在您的实现中,会话的用户知道一些关于连接和池的内容的混乱 对我来说,如果用户从会话池中订购一个会话并将其返回给它,则似乎有一种更“模式方式”。因此,池系统知道是否需要连接,并且创建/销毁机制对用户是透明的。 用户获得“连接”,因为他有一个会话 会话创建不需要使用工厂 这可能是真的,但会话的生命周期对连接的生命周期至关重要。因此,我将负责创建/销毁池,而不是使用对象