请帮我使用std :: thread

时间:2014-07-30 05:33:12

标签: c++ multithreading

我对SQLite有一个很大的查询,我想在另一个线程中进行查询。此外,我想在另一个线程中更新ProgressBar。我只想说,我不明白怎么做,但是如果我创建std::thread t(func); t.join();,我认为我的主线程不会继续运行。

我可以改为每帧更新发送一个SQL查询,但执行速度会更慢。

我有以下代码:

//....pseudo code

int main()
{
    Game g;
    g->run();
    return 0;
}

//....code

class Game
{
private:
    ProgressBar *m_bar;  //have methods increase|decrease & draw for rendering
    SQLClass    *m_sql;

public:
    void handleEvents();
    void update()
    {
        if(/*when happened something*/)
        {
            m_sql->insertVeryBigQuery(); //20-30 seconds for writing
        }
    }
    void render()
    {
        m_bar->draw();
    }

    void run()
    {
        while(1)
        {
            handleEvents();
            update();
            render();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

join()表示您希望等待线程的结束。那不是你想要的。您希望它并行运行。删除连接并找到一种在线程完成时发出主循环信号的方法。