多线程临界区.doc
文本预览下载声明
095-多线程临界区1 一、多线程
线程可以理解为一段独立运行的代码,一个进程里包含2个及以上的线程称为多线程。 二、创建线程
HANDLE CreateThread
//创建新线程 (
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes
//安全描述符指针
security attributes thread attributes 指针 安全 特性
安全 特性 线程 特性 DWORD dwStackSize, // initial thread stack size
//初始化线程堆栈大小
dword stack size 初始化 线程 堆栈 大小
双字节 堆栈 大小 LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
//重要 线程回调函数指针
thread start routine 初始化地址 指针 线程 函数
线程 初始化 程序 LPVOID lpParameter, // argument for new thread
//新线程参数
LPVOID是一个没有类型的指针, 参数 新 线程
也就是说你可以将任意类型的指针赋值给LPVOID类型的变量
(一般作为参数传递),然后在使用的时候再转换回来 DWORD dwCreationFlags, // creation flags
//创建标志
dword creation flags 创建 标志
双字节 创建 标志 LPDWORD lpThreadId // pointer to receive thread ID
//返回线程ID
dword thread id 指针 接收 线程
双字节 线程 );
CreateThread(NULL,0,ThreadProc,NULL,0,NULL); //创建线程 DWORD WINAPI ThreadProc( LPVOID lpParameter // 接收 CreateThread的第4个参数
参数 ) {
//添加线程代码
return 1;
} hand=CreateThread(NULL,0,ThreadProc,NULL,0,NULL); //创建线程 DWORD WINAPI ThreadProc1(LPVOID lpParameter)
{
int i=1; //添加线程代码
while(1)
{
i++;
gotoxy(0,1);
printf(i=%d,i);
Sleep(10);
}
return 1;
} 三、临界区
临界区在使用时以CRITICAL_SECTION结构对
显示全部