[問題] MFC 執行緒 獲得回傳值方式

看板C_and_CPP作者 (幹!我是肌董)時間9年前 (2015/04/17 15:52), 9年前編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
開發平台(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

04/17 17:00, , 1F
iThread變數宣告在class來取值?
04/17 17:00, 1F
Ting1024: 全域變數即可。 04/17 17:14 謝謝樓上二位的熱心解惑!! 等等就來試看看!! ※ 編輯: srxrrr (123.193.58.198), 04/18/2015 01:00:06

04/18 21:46, , 2F
可以的話 盡可能不要用全域變數
04/18 21:46, 2F

04/18 21:47, , 3F
盡量寫成member variable比較好
04/18 21:47, 3F

04/18 21:47, , 4F
但是要寫值跟取值 在MultiThread時要用CCriticalSection
04/18 21:47, 4F
文章代碼(AID): #1LCBl2Vp (C_and_CPP)