c/c++ Windows 多线程
2018-02-18 13:42
711 查看
进程/线程
#
1: 每一个程序运行的时候,操作系统会给这个程序分配一个进程,以32位的操作系统为例:就会分配4GB的虚拟内存空间(代码段,数据段,栈,堆),将程序的代码加载到代码段,并运行程序,执行程序的指令;2:什么是线程
(1)线程是基于进程的轻量级的调度单元,线程是在一个进程中创建出来的,当一个进程出来后,他本身就对应为一个线程。
(2)一个进程还可以创建多个线程,这些线程共享进程的代码段,堆,数据段,唯一不共用的是栈,每一个线程都会有自己独立的栈,这样每一个线程的函数调用与执行都是独立的互不影响;
(3)线程在执行过程中,随时有可能挂起调度出去,所以当两个线程在访问共同的资源的时候要特别注意数据的同步;
(4)数据段,代码段,堆上的数据各个线程可以共享访问;
创建线程
1: 创建一个线程;HANDLEWINAPICreateThread(
LPSECURITY_ATTRIBUTESlpThreadAttributes,
SIZE_TdwStackSize,
LPTHREAD_START_ROUTINElpStartAddress,
LPVOIDlpParameter,
DWORDdwCreationFlags,
LPDWORDlpThreadId
);
函数说明:
第一个参数表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。
第二个参数表示线程栈空间大小。传入0表示使用默认大小(1MB)。
第三个参数表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。
第四个参数是传给线程函数的参数。
第五个参数指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。
第六个参数将返回线程的ID号,传入NULL表示不需要返回该线程ID号。
函数返回值:
成功返回新线程的句柄,失败返回NULL。
Sleep()是 Windows API函数 能够让线程休眠多少毫秒
创建一个事件
1: CreateEvent函数功能:创建事件
函数原型:
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTESlpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCTSTRlpName
);
函数说明:
第一个参数表示安全控制,一般直接传入NULL。
第二个参数确定事件是手动置位还是自动置位,传入TRUE表示手动置位,传入FALSE表示自动置位。如果为自动置位,则对该事件调用WaitForSingleObject()后会自动调用ResetEvent()使事件变成未触发状态。
第三个参数表示事件的初始状态,传入TRUR表示已触发。
第四个参数表示事件的名称,传入NULL表示匿名事件
等待线程结束
1: 等待线程结束WaitForSingleObject/WaitForMultipleObjects函数功能:等待函数 –使线程进入等待状态,直到指定的内核对象被触发。
函数原形:
DWORDWINAPIWaitForSingleObject(
HANDLEhHandle,
DWORDdwMilliseconds
);
2: 休眠:
Sleep(毫秒);
3: 获取线程ID函数
GetCurrentThreadId
触发事件
1: SetEvent函数功能:触发事件
函数原型:BOOL SetEvent(HANDLEhEvent);
函数说明:每次触发后,必有一个或多个处于等待状态下的线程变成可调度状态。
锁
1: 锁:CRITICAL_SECTION对象;
InitializeCriticalSection() // 初始化;
EnterCriticalSection(); // 请求锁
LeaveCriticalSection(); // 释放锁;。
–>源码
相关文章推荐
- Windows C++多线程与Linux C++多线程编程
- Windows平台开启多线程简单示例(C++)
- 【C++ Windows】多线程:创建、挂起、恢复,信号量
- windows下c++编写多线程
- windows下 C++ 多线程+使用互斥资源(购票程序为例)
- windows下多线程编程: c++ , multithreading and dev-cpp
- Windows下使用Dev-C++开发基于pthread.h的多线程程序实例
- C++ 浅说Windows多线程临界区域(Critical Section)
- windows qt 使用c++ posix接口编写多线程程序(真神奇)good
- C++多线程简单入门(二)(Windows版)
- 在Windows下使用Dev-C++开发基于pthread.h的多线程程序【转】
- windows下c++编写多线程
- Windows 下 C/C++ 多线程编程入门参考范例
- windows环境下C++多线程文件传输
- windows下C++多线程学习之一(多线程基础)
- windows 系统下C++实现的多线程
- C++在Windows环境下多线程自动锁的实现
- 说说多线程(linux、windows/c c++ mfc python java多线程)
- C++多线程(一) windows.h
- [windows C/C++]面试准备(二)多线程面试题1