请帮助我使用std::线程

Please, Help me to use std::thread

本文关键字:std 线程 帮助      更新时间:2023-10-16

我对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();
        }
    }
}

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