1. 程式人生 > >VS2010下的多執行緒程式設計入門參考例程

VS2010下的多執行緒程式設計入門參考例程

/*                                                                                                        
 * File         : main.c
 * Description  :
 * Author       :
 * Copyright    :
 * ----------------------
 * History
 * Rev  : 0.1
 * Date : 2012-08-15
 *
 * create.
 * ----------------------
 */

//---------------Include files-------------------------//
#include <Windows.h>
#include <stdint.h>
#include <iostream>
using namespace std;

//---------------Type Defines-------------------------//
typedef uint32_t USER_THREAD_DATA_TYPE;  //定義使用者執行緒資料型別

//---------------Function Prototype-------------------------//
DWORD WINAPI ThreadProc(LPVOID lpParam); //執行緒處理函式

/* 
 * === FUNCTION =========================================
 * Name         : main
 * Description  : 主函式
 * =====================================================
 */
int main()
{
 USER_THREAD_DATA_TYPE pThreadData = 5;
 HANDLE pThreadHandle = CreateThread(NULL, 0, ThreadProc, &pThreadData, 0, NULL); //建立執行緒

 if(pThreadHandle == NULL)
 {
  cout<<"執行緒建立失敗!"<<endl;
 }
 else
 {
  while(pThreadData)
  {
   cout<<"剩餘"<<pThreadData--<<"秒"<<endl;
   Sleep(1000); //延時1秒
  }
  WaitForMultipleObjects(1, &pThreadHandle, TRUE, INFINITE); //等待執行緒退出
  CloseHandle(pThreadHandle);  //關閉執行緒
  cout<<"執行緒退出!"<<endl;
 }
  
 return 0;
}

/* 
 * === FUNCTION =========================================
 * Name         : ThreadProc
 * Description  : 執行緒處理函式
 * =====================================================
 */
DWORD WINAPI ThreadProc( LPVOID lpParam )
{
 USER_THREAD_DATA_TYPE *temp = (USER_THREAD_DATA_TYPE *)lpParam;

 cout<<"進入執行緒,等待退出"<<endl;
 while(*temp); //等待引數值為0

 return 0;
}

相關推薦

no