vc++里使用信号量实现线程同步与互斥

vc++里使用信号量实现线程同步与互斥

ID:9984180

大小:50.00 KB

页数:5页

时间:2018-05-19

vc++里使用信号量实现线程同步与互斥_第1页
vc++里使用信号量实现线程同步与互斥_第2页
vc++里使用信号量实现线程同步与互斥_第3页
vc++里使用信号量实现线程同步与互斥_第4页
vc++里使用信号量实现线程同步与互斥_第5页
资源描述:

《vc++里使用信号量实现线程同步与互斥》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、在vc里实现线程同步与互斥运行,你需要对一下几个函数进行研究学习与掌握使用:1、CreateThread()//创建线程的函数2、CreateSemaphore()//创建信号量的函数3、WaitForSingleObject()//4、ReleaseSemaphore()//*相关函数有:CreateProcess()//创建进程的函数Beginthread()//创建线程的函数OpenSemaphore()WaitForMultipleObjects()(有兴趣者可以对相关函数进行研究学习)二、第一步:你需要首先学会在vc里创建线程1、这里提供创建线程的函数是:C

2、reateThread()函数的原型是:HANDLECreateThread( LPSECURITY_ATTRIBUTESlpThreadAttributes,//SD SIZE_TdwStackSize,//initialstacksize LPTHREAD_START_ROUTINElpStartAddress,//threadfunction LPVOIDlpParameter,//threadargument DWORDdwCreationFlags,//creationoption LPDWORDlpThreadId//threadidentifier);函数说

3、明:  创建一个线程,线程指定要执行的函数或者代码块。函数有六个参数,要理解六个参数分别是干什么用的。下面说明参数的使用:参数1:lpThreadAttributes:指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows98中忽略该参数。在WindowsNT中,NULL使用默认安全性,不可以被子线程继承,否则需要定义一个结构体将它的bInheritHandle成员初始化为TRUE,一般是NULL。参数2:dwStackSize,设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据

4、需要动态延长堆栈的大小。参数3:lpStartAddress,指向线程函数的指针,即函数入口。形式:@函数名,函数名称没有限制,但是必须以下列形式声明:5DWORDWINAPI函数名(LPVOIDlpParam),格式不正确将无法调用成功。比如一下程序1中的函数fun1可以这有定义:DWORDWINAPIFun1(LPVOIDIpParameter);//有点麻烦调用的时候是:hThread1=CreateThread(NULL,0,Fun1,NULL,0,NULL);但是这有写函数有点不习惯,有点麻烦,所以可以这么来定义函数:voidfun1();,但是调用的时候要这么

5、写:CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Fun1,NULL,0,NULL);//也就是lpStartAddress要这样通过LPTHREAD_START_ROUTINE转换。参数4:lpParameter:向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。比如:你要向函数fun1传递一个字符串,可以这么来写程序:程序如下:#include#include#include#include#include

6、voidFun1(LPVOIDp);voidmain(){HANDLEhThread1;char*a="hellofun1!";hThread1=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Fun1,a,0,NULL);getch();CloseHandle(hThread1);}voidFun1(LPVOIDp){printf("%s",(char*)p);}向控制台打印:参数5:dwCreationFlags:线程标志,可取值如下(1)CREATE_SUSPENDED(0x00000004):创建一个挂起的线程,注:传0

7、x00000004(2)0:表示创建后立即激活。(3)STACK_SIZE_PARAM_IS_A_RESERVATION(0x00010000):dwStackSize参数指定初始的保留堆栈的大小,否则,dwStackSize指定提交的大小。该标记值在Windows2000/NTand5WindowsMe/98/95上不支持。参数6:lpThreadId:保存新线程的id。(各参数说明完毕,注:参数说明来自百度文档)函数返回值:函数成功,返回线程句柄;函数失败返回false。若不想返回线程ID,设置值为NULL。到这你会在vc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。