1 //首先介绍widows创建线程的两个函数
2 //创建线程函数
3
4 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,
5 SIZE_T dwStackSize,
6 LPTHREAD_START_ROUTINE lpStartAddress,
7 LPVOID lpParameter,
8 DWORD dwCreationFlags,
9 LPDWORD lpThreadId ) ;
10
11 //如果是写的C++运行库代码,应该用下面这个函数。
12 具体原因可以参照下面博客上的解释
13 http://www.cnblogs.com/wParma/archive/2009/10/30/1593002.html
14
15 _beginthreadex(void *security , //此函数专用于C/C++运行库线程的创建
16 unsigned static_size , //自己在MFC中试了一下,会阻塞主线
17 unsigned (*start_address)(void*),
18 void *arglist,
19 unsigned initflg,
20 unsigned *thrdaddr) ;
21 //下面我们看一个例子
22 #include "windows.h"
23 #include <process.h> /* _beginthread, _endthread */
24 #include "iostream"
25 using namespace std;
26 //定义线程函数
27 DWORD WINAPI ThreadFunC(PVOID pvParam) ;
28 int main()
29 {
30 /*创建线程函数,调用这个函数便会产生一个线程,
31 即使入口函数和参数一样,但是也属于不同线程。*/
32
33 HANDLE hTread = CreateThread(NULL,0,ThreadFunC,0,NULL,0) ;
34 //_beginthreadex(NULL,0,(unsigned int (__stdcall *)(void *))ThreadFunC,0,0,NULL);
35 CloseHandle(hTread); //关闭线程句柄,使其使用数递减。
36 getchar() ;
37 return 0;
38 }
39 DWORD WINAPI ThreadFunC(PVOID pvParam)
40 {
41 int i = 0 ;
42 while (1)
43 {
44 i++;
45 Sleep(1000);
46 cout<<"我是线程函数,我运行了"<<i<<"次了"<<"
";
47 }
48 return 0 ;
49 }
50