当前位置:  开发笔记 > 编程语言 > 正文

Threadstatic懒惰

如何解决《Threadstatic懒惰》经验,为你挑选了1个好方法。

我很好奇以下示例代码是否是线程安全的:

public class Test
{
    [ThreadStatic]
    private static Foo current;

    public static Foo GetFoo()
    {
        return current ?? (current = new Foo());
    }
}

public class Foo
{
}

通常情况下,我会使用Lazy,但由于每个单独的线程有一个单独的变量,该属性本质上应该是线程安全的,这是正确的吗?

谢谢.



1> Wouter..:

您提供的代码看起来非常安全.如果您对此感到满意,Lazy可以使用ThreadLocal哪种方式以类似的方式工作,但是保存其值线程安全和每个线程.

// Thread-Local variable that yields a name for a thread
ThreadLocal ThreadName = new ThreadLocal(() =>
{
    return "Thread" + Thread.CurrentThread.ManagedThreadId;
});

https://msdn.microsoft.com/en-us/library/dd642243(v=vs.110).aspx

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有