【问题标题】:Pooled Custom Lifestyle for Windsor that blocks温莎的汇集定制生活方式
【发布时间】:2011-08-04 14:37:55
【问题描述】:

我有一个服务需求。要求规定我必须获得最多 N 个服务实例。如果没有可用的实例,则阻止/等待一个实例被释放,然后返回可用的实例。这与集中式生活方式非常相似。

我对 Pooled Lifestyle 的理解是:

  • 首次请求的 N 个对象将被创建(其中 N 是最大池大小)
  • 收到对象请求后,池化生活方式最初会从池中返回一个对象,直到池中的所有对象都“正在使用”
  • 当所有对象都“正在使用”时,会创建额外的对象(超出最大池大小的范围)。
  • 当对象被释放时,它们要么被销毁(如果大于最大池大小),要么被返回到池中(如果小于最大池大小)。

这与我想要的行为相似,但略有不同。不要创建超过最大池大小的对象,等待“正在使用”的对象被释放,然后返回一个可用的对象。

有什么想法吗?这可以在不阻塞不同线程上的其他容器解析的情况下完成吗?

【问题讨论】:

    标签: castle-windsor


    【解决方案1】:

    您需要实现IPoolFactoryIPool 并在容器中注册工厂。然后你的池可以做任何你需要的事情,包括阻塞。

    【讨论】:

    • 非常感谢...我看到 PoolableLifestyleManager 使用了这两个接口。我会试一试,然后跟进。
    • 注册:container.Register(Component.For<IPoolFactory>().ImplementedBy<MyBlockingPoolFactory>());
    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多