VC中的win32控制檯程序,而後包含MFC的程序,用CreateThread()向其對應函數傳參數的問題安全
// test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "test.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp theApp; using namespace std; static int count=5; static HANDLE h1=NULL; static HANDLE h2; DWORD dwfun; int func1(int *a); void func2(); int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; h1=CreateThread((LPSECURITY_ATTRIBUTES)NULL, // 默認的安全屬性指針 0, // 線程堆棧大小 (LPTHREAD_START_ROUTINE)func1, // 線程所要執行的函數 (LPVOID) &count, // 線程對應函數要傳遞的參數 0, // 線程建立後所處的狀態,爲0表示當即執行,若爲CREATE_SUSPENDED則爲建立後掛起,需用ResumeThread()激活後纔可執行 &dwfun); // 線程標識符指針 Sleep(5000); CloseHandle(func1); ExitThread(0); return nRetCode; } //注意函數裏的參數必定要使用指針類型,由於LPVOID是指針類型,在函數中使用的時候用指針的引用 int func1(int *a) { printf("This is a running thread!\n%d\n",2**a); return 0; }