2011-12-27 7 views
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 +スレッド機能へのインタフェースとしてのようです。

+0

これはまさに私がDコミュニティが純粋なD GUIツールキットを思い付くべきであり、既存のC/C++へのバインディングではないと思う理由です。 D代議員、メッセージなどは、ほんの少しのことに過ぎません。これらのD機能は、私の謙虚な意見では、現代的なD GUIツールキットで利用する必要があります。 – DejanLekic

答えて

0

残念ながら私は答えがいいえであると確信しています。 GtkDは共有される前に設計されており、D1とD2の両方をサポートしています。さらに、共有はとてもバグがあり、まだ使用できません。したがって、GtkDは共有をサポートしておらず、おそらく間はありません。

関連する問題