我正在玩gtkD一段时间,我正在学习D2 / Phobos并行。昨天我正在查找std.concurrency模块并试图编写一个玩具多线程分形查看器,但问题是我看不到多线程与gtkD一起工作的方式。
现在,我有这个:
import std.concurrency;
class TestMainWindow : MainWindow
{
this() {
super("test");
...
spawn(&worker);
}
public void notify() {
m_progress.pulse();
}
private ProgressBar m_progress;
}
shared(TestMainWindow) window;
main(string[] args) {
Main.init(args);
window = new shared(TestMainWindow)();
Main.run();
}
void worker() {
for (int i = 0; i < 20; ++i) {
(cast(TestMainWindow) window).notify();
Thread.sleep(dur!"msecs"(200));
}
}
在Andrei的书中,在并发章节中,有消息传递范式,我想要 应用,但问题是gtk主循环对我隐藏。我不喜欢上面的代码,因为它 难以投射到非共享且可能不安全。 那么是否有一些方法可以继承“线程无关”类,使其具有线程感知能力,以及它是什么 gtkD中的标准机制来编写多线程应用程序?我见过gthread.Thread模块, 但它的作用似乎只是作为外部C gtk +线程功能的接口。
答案 0 :(得分:0)
不幸的是,我很确定答案是肯定的。 GtkD是在共享存在之前设计的,并且支持D1和D2。此外,共享是如此错误,它还不可用。因此,GtkD不支持共享,可能暂时不会支持。