VC6.0中建立的線程的傳參數問題

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;
}
相關文章
相關標籤/搜索