0
看看下面的示例,創建一個具有獨立線程的全局對象是否安全?
#include <iostream>
#include <thread>
class GPS
{
public:
GPS() { this->init(); }
~GPS() {m_thread.join();}
private:
std::thread m_thread;
void init() { m_thread = std::thread(&GPS::update,this); }
void update() { /*get data from gps sensor.*/ };
};
GPS myGPS;
int main()
{
return 0;
}
是什麼/是全球範圍內創建一個對象,它有它自己的線程的後果是什麼?這是安全的方法嗎?如果不是,假設對象必須是全局的並且具有獨立的線程,那麼有什麼替代方案?謝謝。
[主線程是否允許在進入main()之前產生一個POSIX線程?](https://stackoverflow.com/questions/21771066/is-the-main-thread-allowed-to- spawn-a-posix-thread-before-it-entering-main) - 問題的表達方式有點不同,但接受的答案非常出色,並且與你的問題非常相關。另一種選擇是梅耶斯的單身人士在「main」開始時首次初始化。 – Zulan
@Zulan這不是POSIX線程,它是std線程。 – Yakk
閱讀答案。 – Zulan