windows多線程編程

來源:互聯網
上載者:User

  我們知道,要建立一個線程,必須得有一個主進程,然後由這個主進程來建立一個線程,在一般的VC程式中,主函數所在的進程就是程式的主進程。 

  讓我們從主函數來開始編寫我們這個簡單的小程式。我們知道CreateThread函數可以用來建立一個線程,在MSDN中尋找這個函數得到如下資訊:"The CreateThread function creates a thread to execute within the address space of the calling process."和"If the function succeeds, the return value is a handle to the new thread."所以我們得定義一個控制代碼用來存放它的傳回值。還定義一個指向線程ID的DWORD值dwThreadId。然後我們就可以用CreateThread函數來建立我們的線程了,CreateThread函數有六個參數分別是
  LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes
  DWORD dwStackSize, // initial thread stack size
  LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
  LPVOID lpParameter, // argument for new thread
  DWORD dwCreationFlags, // creation flags
  LPDWORD lpThreadId // pointer to receive thread ID
其中第一個參數我們設定為NULL,使這個控制代碼不能被繼承;第二個參數設定為0,使用預設的堆棧大小;第三個參數為線程函數的起始地址,也就是線程函數的函數名;第四個參數為NULL,沒有值要傳遞給線程函數;第五個參數為0,建立好之後馬上讓線程運行;第六個參數設定為指向線程ID的地址。建立好線程之後,線程函數進行初始化之類的操作,主函數繼續執行,此時可以輸出被建立線程的ID。我們在主函數中用WaitForSingleObject函數來等待線程函數變成受信(signaled)狀態,它的兩個參數分別是
  HANDLE hHandle, // handle to object to wait for
  DWORD dwMilliseconds // time-out interval in milliseconds
第一參數為線程函數的控制代碼,第二個參數設定為INFINITE,等待線程一直執行完。在程式的最後還要記得用CloseHandle函數關閉線程,這樣主函數就寫完了。

  線上程函數裡面我們可以簡單地做一些工作,比如設定一個迴圈,讓它輸出一定的資訊等。來源程式如下:
#include <windows.h>
#include <iostream.h>
DWORD WINAPI ThreadFunc(HANDLE Thread)
{
 int i;
 for(i=0;i<10;i++)
 {
  cout<<"A new thread has created!"<<endl;
 }
 return 0;
}

int main(int argc,char* argv[])
{
 HANDLE Thread;
 DWORD dwThreadId;
 Thread=::CreateThread
  (NULL,0,ThreadFunc,NULL,0,&dwThreadId);
 cout<<"The new thread ID is :"<<dwThreadId<<endl;
 ::WaitForSingleObject(Thread,INFINITE);
 ::CloseHandle(Thread);
 return 0;
}

——轉自http://blog.csdn.net/richard_2010/archive/2006/03/05/616143.aspx 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.