什么是线程
1、在Windows平台上,最终可以利用CPU执行代码的最小尸体就是线程
2、首先从内核角度看,线程是一个内核对象,系统用它来村塾一些关于线程统计信息(比如时间)
3、从编程角度来看,线程是一堆寄存器状态以及线程栈的一个结构体对象,本质上可以理解为一个函数调用其(
寄存器状态用与控制CPU执行,栈用于存储局部变量和函数调用参数及函数返回地址)
4、最后需要知道的就是线程还可以带有几个队列(简单的理解为异步函数调用队列):
消息队列(GUI线程系统内部会创建)
APC队列(调用APC函数时会创建)
(注意:这些队列在线程创建时比并不存在)
5、线程就是执行体
什么时候不使用线程
1、当一个算法是严格穿行化的时候,也就是计算的每一步都严重以来前一个操作步骤的结果的时候
2、当有多个功能任务也具有比较严格的先后逻辑关系的时候,不宜采用多线程
3、还有一个特殊情况,比如一个服务器需要处理成千上万个客户端链接,并处理不同的请求的时候,这种
情况下应当优先考虑线程池,而不是简单的多线程。
默认的线程函数必须具有如下原型
DWORD WINAPI ThreadProc(LPVOID LpParameter);
调用API:CreateThread可以创建一个新进程
HANDLE WINAPI CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUT