小编Mex*_*Dev的帖子

在同一个线程内锁定字典

我有一个函数,它根据Key(名称)返回字典上的条目,如果它不存在,则返回一个新创建的条目.

我的问题是"双锁":SomeFunction锁定_dictionary,检查键的存在,然后调用一个也锁定相同字典的函数,它似乎工作但我不确定是否有一个这种方法的潜在问题.

public Machine SomeFunction(string name) 
{
    lock (_dictionary)
    {
        if (!_dictionary.ContainsKey(name))
                    return CreateMachine(name);
        return _dictionary[name];
    }
}


private Machine CreateMachine(string name)
{
    MachineSetup ms = new Machine(name);
    lock(_dictionary)
    {
        _ictionary.Add(name, ms);
    }
    return vm;
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading

10
推荐指数
1
解决办法
2067
查看次数

从位掩码返回一组对象

我"需要"一种更好的方法来从位掩码生成一个对象集合(一个ushort传递,在二进制形式上它被解释为一个掩码)

简单,非优雅的解决方案是:

public static Things[] Decode(ushort mask)  
{  
    switch (mask)  
    {  
        case 1: // 1  
            return new[] { new Thing(0) };    
        case 2: //10  
            return new[] { new Thing(1) };  
        case 3: // 11  
            return new[] { new Thing(1), new Thing(0) };  
        case 4: // 100  
            return new[] { new Thing(2) };   
        case 5: // 101  
            return new[] { new Thing(2), new Thing(0) };  
Run Code Online (Sandbox Code Playgroud)

// so on ......

c#

3
推荐指数
1
解决办法
230
查看次数

标签 统计

c# ×2

multithreading ×1