标题是一本书名,写得挺有意思的,是今天早上同事带过来的,我借过来看了一会儿.
然后按照书里面前面几章的内容敲了一些代码,跑了几个例子看了一下.
创建线程的函数:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId );
lpThreadAttributes 描述施行于这一新线程的security属性.NULL表示使用缺省值.
dwStackSize 新线程拥有自己的堆栈,0表示使用缺省值:1MB
lpStartAddress 新线程将开始的地址.这是一个函数指针.
lpParameter 此值将被传送到上述所指定之新线程函数去,作为参数.
dwCreationFlags 允许你产生一个暂时挂起的线程,默认情况是立即开始执行.
lpThreadId 新线程的ID会被传回到这里,他是一个全局变量,可以独一无二地表示系统任一进程中的某个线程.
如果创建成功,传回一个handle,代表新进程,否则传回一个false
例子代码如下:
#define WIN32_LEAN_AND_MEAN #include <stdio.h> #include <stdlib.h> #include <Windows.h> #include <conio.h> DWORD WINAPI ThreadFunc(LPVOID); #define Test2 #ifdef Test1 int main() { HANDLE hThrd; DWORD threadId; int i; for (i=0;i<5;i++) { hThrd = CreateThread(NULL,0,ThreadFunc,(LPVOID)i,0,&threadId); if (hThrd) { printf("Thread launched %d ",i); CloseHandle(hThrd); } } //Sleep(2000); system("pause"); return EXIT_SUCCESS; } DWORD WINAPI ThreadFunc(LPVOID n) { int i; for (i=0;i<10;i++) { printf("*************%d ",n); } return 0; } #endif #ifdef Test2 int main() { HANDLE hThrd1; HANDLE hThrd2; DWORD exitCode1 = 0; DWORD exitCode2 = 0; DWORD threadId; hThrd1 = CreateThread(NULL,0,ThreadFunc,(LPVOID)1,0,&threadId); if (hThrd1) { printf("Thread 1 launched "); } hThrd2 = CreateThread(NULL,0,ThreadFunc,(LPVOID)2,0,&threadId); if (hThrd2) { printf("Thread 2 launched "); } for(;;) { printf("Press any key to exit.. "); getch(); GetExitCodeProcess(hThrd1,&exitCode1); GetExitCodeProcess(hThrd2,&exitCode2); if (exitCode1 == STILL_ACTIVE) { puts("Thread 1 is still running!"); } if (exitCode2 == STILL_ACTIVE) { puts("Thread 2 is still running!"); } if (exitCode1 != STILL_ACTIVE && exitCode2 != STILL_ACTIVE) { break; } } CloseHandle(hThrd1); CloseHandle(hThrd2); printf("Thread 1 returnd %d ",exitCode1); printf("Thread 2 returnd %d ",exitCode2); //system("pause"); return EXIT_SUCCESS; } DWORD WINAPI ThreadFunc(LPVOID n) { Sleep((DWORD)n*1000*2); return (DWORD)n*10; } #endif
一些个人感想:同事是中南大学计算机06级的,之前一直在上海工作,已经工作6,7年了,我发现他的书真是多,隔三差五
就带一本计算机方面的书过来,而且都是一些我之前从来没有接触过的书,真是涨了见识,而且他为人非常和善,跟他交流过
几次,没有一点架子,很乐于跟你分享他的一些经验,跟高手待在一起就是好啊!