-3

我有以下静态类。规则是自定义类型。请确认这种方法对于我传递给每个生成静态函数的规则的变量listToUpdate是线程安全的。

public static class RulesBO
{
    public static List<Rule> GetRulesForTransaction(int transID)
    {
        List<Rule> toReturn = new List<Rule>();
        GetRulesForSetA(transID,toReturn);
        GetRulesForSetB(transID,toReturn);
    }

    public static void GetRulesForSetA(int transID, List<Rule> listToUpdate)
    {
        /*business logic and finally add/remove elements from listToUpdate*/

    }

    public static void GetRulesForSetB(int transID, List<Rule> listToUpdate)
    {
        /*business logic and finally add/remove elements from listToUpdate*/

    }
}

感谢您的帮助

编辑:将从 ASP.NET 调用类 RulesBO。所以对于每个会话,对于用户的transactionID,都会调用GetRulesForTransaction 方法返回一个规则列表。

每个 GetRulesForSetXYZ 都会对特定的 transID 进行数据库调用,获取一些值,进行一些检查,如 <> 100、> 1000 等,然后将新的 RULE 实例添加到变量中。那些其他方法将是私有的,只有第一种方法是公共的。

4

1 回答 1

1

既然你说:

每个 GetRulesForSetXYZ [...] 都是私有的,只有第一个方法是公共的。

这意味着即使同时从几个不同的线程调用入口方法,每个调用都有自己的列表。这些列表中的每一个都只能从单个线程访问(至少在它们返回之前),因此您没有任何多线程访问来同步,因此不会出现竞争条件。

于 2013-05-10T17:42:13.537 回答