[問題] 困擾的thread in vector
大家好!
被下面這個問題困擾很久…
一個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
02/02 18:40, 1F
→
02/02 18:40, , 2F
02/02 18:40, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章