作者srxrrr (幹!我是肌董)
看板C_and_CPP
標題[問題] MFC 執行緒 獲得回傳值方式
時間Fri Apr 17 15:52:31 2015
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2010
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
MFC
問題(Question):
想請問如何獲得AfxBeginThread後產生子執行緒的運算結果
如下面所貼的單純程式碼
要如何回傳子執行緒內所得到iThread值呢?
希望大家能提供一點意見 感激不盡!!
謝謝!!
程式碼(Code):(請善用置底文網頁, 記得排版)
struct THREAD_INFO //用於傳遞執行參數子執行緒的資料型態
{
HWND hWnd; //產生執行緒的視窗物件
int iValue;
}Thread_Info; //建立執行緒參數為全域變數
void CMultiTestDlg::OnBnClickedButton1()
{
Thread_Info.iValue = 1; //要輸入的參數
AfxBeginThread(Thread, (LPVOID)&Thread_Info); //產生一個子thread
}
UINT CMultiTestDlg::Thread(LPVOID pParam) //執行緒函數
{
THREAD_INFO *Thread_Info = (THREAD_INFO*)pParam;
//建立一個THREAD_INFO的結構指標 傳入Thread的參數
int iThread = Thread_Info->iValue + 1; //不知該如何將此值回傳...
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.212.97
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1429257154.A.7F3.html
→ sos0214: iThread變數宣告在class來取值? 04/17 17:00
推 Ting1024: 全域變數即可。
04/17 17:14
謝謝樓上二位的熱心解惑!! 等等就來試看看!!
※ 編輯: srxrrr (123.193.58.198), 04/18/2015 01:00:06
推 Keitaro: 可以的話 盡可能不要用全域變數 04/18 21:46
→ Keitaro: 盡量寫成member variable比較好 04/18 21:47
→ Keitaro: 但是要寫值跟取值 在MultiThread時要用CCriticalSection 04/18 21:47