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