gpt4 book ai didi

C# 控制同时运行的线程数

转载 作者:行者123 更新时间:2023-12-01 19:41:43 25 4
gpt4 key购买 nike

我正在尝试实现一个程序,最多允许十个人同时挑选一个物体,例如杯子或汽车。这意味着当其中一个人完成后,就有一个空闲的地方供另一个人挑选一个物体。拾取的最长时间为 5 秒。我尝试使用一系列任务,但这不起作用,因为选择器位于不同的机器上。我可以在任何时候一个人选择一个对象时更新数据库,然后检查数据库中的值,但我认为这是一个坏主意。我如何控制这些线程或镐?

我需要控制/跟踪运行的最大线程数,无论对象的拾取在哪里完成。

谢谢

最佳答案

这听起来不像是线程问题,而更像是服务器/客户端对象管理器。您可以采用很多方向,但一个简单的解决方案是拥有一个管理每个对象的服务。

/* Common interface each object shares */
public interface IObject { ... }
/* Sharable Object implementing IObject */
public class Cup : IObject { ... }

/* This class would be exposed via WCF or Remoting */
public class ObjectSharer : IObjectSharer {
enum ObjectType { Cup, Car }
IObject GetObject(ObjectType ObjType) { ... }
ReturnObj(IObject) { ... }
}

您必须填写实现,但希望这能为您提供一些关于如何解决此类问题的想法。

在 GetObject 方法中,jwde 建议使用信号量,这将是处理资源管理的好方法,将对象限制为 10 个。

关于C# 控制同时运行的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31997719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com