잠시 동안 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 메인 루프가 내게 숨겨져있어. 위의 코드가 마음에 들지 않습니다. 은 공유되지 않고 안전하지 않을 수도 있습니다. "thread-agnostic"클래스를 상속하여 스레드를 인식하도록하는 방법이 있습니까? gtkD의 표준 메커니즘은 멀티 스레드 응용 프로그램을 프로그래밍 할 수 있습니까? gthread.Thread 모듈, 을 보았지만 그 역할은 외부 C gtk + 스레딩 기능에 대한 인터페이스로만 보인다.
D 커뮤니티가 기존 C/C++ 하나의 바인딩이 아닌 순수한 D GUI 툴킷을 사용해야한다고 생각하는 이유입니다. D 대표, 메시지 등은 몇 가지 사항을 염두에 두어야합니다. 이러한 D 기능은 겸손한 의견으로 현대의 D GUI 툴킷에서 활용되어야합니다. – DejanLekic