2
我正在玩gtkD一段时间,我正在学习D2/Phobos并行。昨天我正在查找std.concurrency模块,并试图编写玩具多线程分形浏览器,但问题是我看不到多线程与gtkD一起工作的方式。多线程应用程序与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));
}
}
在安德烈的书,并发一章中,有消息传递模式,我想 应用,但问题是,GTK主循环对我来说是隐藏的。我不喜欢上面的代码,因为它的 很难投给非共享并且可能不安全。 那么是否有某种方法来继承“线程无关”的类,使其线程感知,以及gtkD中的标准机制是什么以编程多线程应用程序?我见过gthread.Thread模块, ,但它的作用似乎只是作为外部C gtk +线程功能的接口。
这正是我认为D社区应该拿出一个纯D GUI工具包的原因,而不是一些绑定到现有的C/C++工具包。 D代表,消息等只是几个想到的东西。我认为这些D功能应该被用在一个现代的D,GUI工具箱中。 – DejanLekic 2011-12-27 16:23:03