首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gtkD的多线程应用程序

使用gtkD的多线程应用程序
EN

Stack Overflow用户
提问于 2011-12-27 23:41:23
回答 1查看 273关注 0票数 2

我在玩gtkD一段时间,同时也在学习D2/Phobos。昨天我在查找std.concurrency模块,并试图编写一个玩具多线程分形查看器,但问题是我看不到多线程在gtkD中的工作方式。

现在,我有了这个:

代码语言:javascript
复制
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));
    }
}

在Andrei的书中,在关于并发的章节中,有消息传递范例,我想应用它,但问题是gtk主循环对我来说是隐藏的。我不喜欢上面的代码,因为它很难转换为非共享的,而且很可能是不安全的。那么,是否有某种方法可以继承“线程无关”类,使其成为线程感知类,以及gtkD中编写多线程应用程序的标准机制是什么?我见过gthread.Thread模块,但它的作用似乎只是作为外部C gtk+线程功能的接口。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-28 01:58:07

不幸的是,我非常确定答案是否定的。GtkD是在shared出现之前设计的,同时支持D1和D2。此外,共享是如此多的buggy,以至于还不能使用。因此,GtkD不支持共享,可能在一段时间内也不会支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8646413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档