【问题标题】:How to create a thread safe singleton in vala?如何在 vala 中创建线程安全的单例?
【发布时间】:2014-11-09 19:33:47
【问题描述】:

我想为我的 vala 类创建一个线程安全的单例实例。

如您所知,如果没有正确实施,单例可能会导致threading issues

【问题讨论】:

    标签: glib vala


    【解决方案1】:

    您也可以使用单实例代码属性。它会自动为您做同样的事情!

    [SingleInstance]
    public class ExampleClass : Object {
        public ExampleClass (){
    
        }
    }
    

    【讨论】:

    【解决方案2】:

    推荐的方法是使用GLib.Once 构造:

    public class MyClass : Object {
    
        private static GLib.Once<MyClass> _instance;
    
        public static unowned MyClass instance () {
            return _instance.once (() => { return new MyClass (); });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2017-04-29
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多