我想为我的vala类创建一个线程安全的单例实例。
如您所知,如果没有正确实施,单身人士可能会导致threading issues。
答案 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 (){
}
}