请帮助我使用std::线程
Please, Help me to use std::thread
我对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()
表示您希望在那里等待线程的结束。那不是你想要的。你想让它并行运行。删除连接,并在线程完成时找到一种方法向主循环发出信号。
相关文章:
- 即发即弃 std::线程对象清理自身
- std::线程导致程序中止
- 在std::线程中使用已分配的结构数据
- 使用-static libstdc++时std::线程弱,因此在运行时会导致崩溃
- std::线程与 pthread_setschedparam 与 C++ 11.
- 运行 std::线程不在构造函数中
- C++ std::线程调用方法,从对象原因到调用此类的析构函数
- 编译问题 C++ 同时,尝试通过调用另一个对象中的成员函数来创建 std:: 线程
- 错误:静态断言失败:std ::线程参数必须在转换为rvalues后不可行
- C STD ::线程中的种族状况或内存损坏
- 在 Valgrind 输出中仍然可以访问 std 线程向量的块
- 将类Cotaining std ::线程添加到向量
- 如何使用mingw编译C STD ::线程代码
- 从其他std ::线程更新QT GUI
- STD ::线程不会退出
- 处理 std::线程包装器类的立即销毁
- C++ std 线程并列出分段错误(核心转储)
- 杀死后的STD ::线程如何处理
- 干净取消在输入/输出调用中被阻止的 std::线程
- std ::线程最大并发线程