//首先介绍widows创建线程的两个函数
//创建线程函数 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ) ;
//如果是写的C++运行库代码,应该用下面这个函数。
具体原因可以参照下面博客上的解释
http://www.cnblogs.com/wParma/archive/2009/10/30/1593002.html
_beginthreadex(void *security , //此函数专用于C/C++运行库线程的创建 unsigned static_size , //自己在MFC中试了一下,会阻塞主线 unsigned (*start_address)(void*), void *arglist, unsigned initflg, unsigned *thrdaddr) ;
#include "windows.h" #include <process.h> /* _beginthread, _endthread */ #include "iostream" using namespace std;
//定义线程函数 DWORD WINAPI ThreadFunC(PVOID pvParam) ;
int main() { /*创建线程函数,调用这个函数便会产生一个线程, 即使入口函数和参数一样,但是也属于不同线程。*/ HANDLE hTread = CreateThread(NULL,0,ThreadFunC,0,NULL,0) ; //_beginthreadex(NULL,0,(unsigned int (__stdcall *)(void *))ThreadFunC,0,0,NULL); CloseHandle(hTread); //关闭线程句柄,使其使用数递减。 getchar() ; return 0; }
DWORD WINAPI ThreadFunC(PVOID pvParam) { int i = 0 ; while (1) { i++; Sleep(1000); cout<<"我是线程函数,我运行了"<<i<<"次了"<<"\n"; } return 0 ; }
原文:http://www.cnblogs.com/yfyzy/p/3916154.html