1、线程是附属在进程上的执行实体,是代码的执行流程。 2、一个进程可以包含多个线程,但一个进程至少要包含一个线程。 进程是空间的概念,挂起进程,实际上是挂起线程;线程是时间概念,线程有多少个,说明有多少个代码段在执行。如何理解多个代码段在执行? - 单核状态下,线程交叉执行,感觉上是同时执行的; - 多核状态下,多尔CPU同时执行。 创建线程 ```c++ HANDLE CreateThread( lpSECURITY_ATTBUTES lpThreadAttributes, //SD 只要是内核对象都会有SD安全描述符 SIZE_T dwStackSize, //初始化堆栈大小 LPTHREAD_START_ROUTINE lpStartAddress, //线程执行的函数地址 LPVOID lpParameter, //线程执行的函数参数 DWORD dwCreationFlags, //创建选项 LPDWORD lpThreadId //输出 线程标识符 ) ``` 无参数创建线程 ```c++ #include "stdafx.h" #include //线程函数 VOID __stdcall testProc() { for(int i=100; i>0; i--) { Sleep(500); printf("+++++++ %d\n", i); } } //外平栈 DWORD WINAPI ThreadProc(LPVOID lpParameter) { for(int i=100; i>0; i--) { Sleep(500); printf("++++++++ %d\n", i); } return 0L; } int _tmain(int argc, _TCHAR* argv[]) { HANDLE hThread; hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)testProc, NULL, 0, NULL); CloseHandle(hThread); for(int i=100; i>0; i--) { Sleep(500); printf("--------%d\n", i); } return 0; } ```