[問題] 困擾的thread in vector

看板C_and_CPP (C/C++)作者 (╮(╯3╰)╭)時間16年前 (2009/02/02 16:12), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/2 (看更多)
大家好! 被下面這個問題困擾很久… 一個class,在建構子啟動一條win32 thread。 class CThd { public: CThd():flag(1) { CloseHandle(CreateThread(NULL, NULL, ThdApp, this, NULL, NULL)); } static DWORD WINAPI ThdApp(LPVOID pvoid) { while (((CThd*)pvoid)->flag) cout << "running.." << endl; return 0; } INT flag; }; 現在,想把這個class放到vector裡面。 問題來了,用方法一還是方法二呢? int main() { // 方法一 vector<CThd> vec; vec.push_back(CThd()); Sleep(10); vec.at(0).flag = 0; // 方法二 vector<CThd*> vec; vec.push_back(new CThd); Sleep(10); vec.at(0)->flag = 0; delete vec.at(0); // 我是乖小孩 system("PAUSE"); return 0; } 結果方法一造成thread停不下來! 而方法二正確的把thread停下來了。 請問,這兩個方法有哪裡不同嗎? 謝謝! montreal 相關includes #include <windows.h> #include <iostream> #include <vector> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.64.222 ※ 編輯: montreal 來自: 219.87.64.222 (02/02 16:58)

02/02 18:40, , 1F
方法一改成 vector<CThd &> vec; 放reference看看
02/02 18:40, 1F

02/02 18:40, , 2F
我猜是你放object進去vector是會複製一份...
02/02 18:40, 2F
文章代碼(AID): #19Xgi4qw (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19Xgi4qw (C_and_CPP)