目录
一.GUI线程和工作线程
每个程序在启动时都有一个线程,这个线程被称为“主线程”(在Qt应用程序中也称为“GUI线程”)。Qt GUI必须在主线程中运行。所有widgets和一些相关的类,例如QPixmap,都不能在辅助线程中工作。辅助线程通常被称为“工作线程”,因为它用于减轻主线程的工作负担。
二.同时访问数据
每个线程都有自己的堆栈,这意味着每个线程都拥有自己的调用历史和本地变量。与进程不同,线程共享相同的地址空间。下图显示了线程的构建块在内存中的位置。非活动线程的程序计数器和寄存器通常保存在内核空间中。每个线程都有一个共享的代码副本和一个单独的堆栈。
如果两个线程具有指向同一对象的指针,则两个线程可能同时访问该对象,这可能会破坏对象的完整性。很容易想象,当同时执行同一对象的两个方法时,会出现很多问题。