线程:是进程中一个程序流程,是一个最小的独立运行单位。其实就是处理一件事情的一个完整函数。线程有自己的堆栈但是没有独立的地址空间。一个线程死掉相当于整个进程死掉,没有多进程程序健壮。
进程:可以理解为一个应用实例,可以分配系统资源(CPU时间,内存)具有独立的地址空间。
线程优点:1、资源节俭 2、内部通信机制方便
工作经验:在多线程程序开发中,对前任工作人员代码中处理事务的一个线程增加功能,增加功能时需要定义数组,这时有可能造成线程的内存溢出,错误代码为12.解决方法有两种:
第一种:简单粗暴,直接修改线程的栈大小。
第二种:把线程中的占用内存多的程序封装成函数进行调用。如下代码只有第一种,第二种也很简单不做介绍。
#include <stdio.h>
#include <windows.h>
#define STACK_SIZE 0.5*1024*1024
DWORD WINAPI ThreadFunc(PVOID pvParam)
{
DWORD dwRet = 0;
printf("%-3d:0x%x\n",pvParam,&dwRet);
return dwRet;
}
int
main(int,char**)
{
DWORD dwTid;
printf("Main:0x%x\n",&dwTid);
for(int i=0;i<50;i++)
CreateThread(NULL,STACK_SIZE,ThreadFunc,(PVOID)i,0,&dwTid);
Sleep(2000);
return 0;
}