【发布时间】:2014-11-09 19:33:47
【问题描述】:
我想为我的 vala 类创建一个线程安全的单例实例。
如您所知,如果没有正确实施,单例可能会导致threading issues。
【问题讨论】:
我想为我的 vala 类创建一个线程安全的单例实例。
如您所知,如果没有正确实施,单例可能会导致threading issues。
【问题讨论】:
您也可以使用单实例代码属性。它会自动为您做同样的事情!
[SingleInstance]
public class ExampleClass : Object {
public ExampleClass (){
}
}
【讨论】:
推荐的方法是使用GLib.Once 构造:
public class MyClass : Object {
private static GLib.Once<MyClass> _instance;
public static unowned MyClass instance () {
return _instance.once (() => { return new MyClass (); });
}
}
【讨论】: