如何在vala中创建线程安全的单例?

时间:2014-11-09 19:33:48

标签: glib vala

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

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

2 个答案:

答案 0 :(得分:2)

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

public class MyClass : Object {

    private static GLib.Once<MyClass> _instance;

    public static unowned MyClass instance () {
        return _instance.once (() => { return new MyClass (); });
    }
}

答案 1 :(得分:1)

还可以使用SingleInstance代码属性。它会自动为您完成!

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

    }
}
相关问题