私は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