2

是否有某种非阻塞计时器可以在我的主线程中使用,它会调用一个读取消息队列的函数,以查看是否有任何工作线程给了我有用的信息来更新 GUI ?

或者我是否必须在需要时诉诸老式的轮询/更新。

有什么方法可以安排更新吗?我知道你不能有跨线程回调,即我的工作线程在主线程上运行回调,我不确定即使使用延续类你也可以做到这一点。

但是我想知道是否可以使用抽象层来实现它,例如在 iOS 中,我可以使用 GCD 轻松地在主 GUI 线程上运行东西,而 Windows 8 有一种方法可以让函数在未来完成后运行调用它的线程。我猜是Android,因为您使用JNI 与VM 交互,C++ 线程都不是GUI 线程,所以这实际上并不重要。

所以我可以写一段代码来为每个平台抽象这个?

4

1 回答 1

2

thomas 发表的评论很好,所以这显然是最好的链接除此之外,我还做了一个可以提供帮助的示例。

#include <iostream>
#include <stdio.h>
#include <thread>
using namespace std;
int main()
{
    std::thread([]() {std::this_thread::sleep_for(std::chrono::milliseconds(1000));
                      cout<<"end of the thread\n";
                    }).detach();

    for (int i=0;i<20;++i)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(100));
        cout<<i<<std::endl;
    }
    return 0;
}

我的输出是: 0 1 2 3 4 5 6 7 8 end of the thread 9 10 11 12 13 14 15 16 17 18 19

希望有帮助:-)

于 2013-07-10T19:41:47.680 回答