一、在vc里实现线程同步与互斥运行,你需要对一下几个函数进行研究学习与掌握使用:1、CreateThread()//创建线程的函数2、CreateSemaphore()//创建信号量的函数3、WaitForSingleObject()//4、ReleaseSemaphore()//*相关函数有:CreateProcess()//创建进程的函数Beginthread()//创建线程的函数OpenSemaphore()WaitForMultipleObjects()(有兴趣者可以对相关函数进行研究学习)二、第一步:你需要首先学会在vc里创建线程1、这里提供创建线程的函数是:CreateThread()函数的原型是:HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,//SDSIZE_TdwStackSize,//initialstacksizeLPTHREAD_START_ROUTINElpStartAddress,//threadfunctionLPVOIDlpParameter,//threadargumentDWORDdwCreationFlags,//creationoptionLPDWORDlpThreadId//threadidentifier);函数说明:创建一个线程,线程指定要执行的函数或者代码块。函数有六个参数,要理解六个参数分别是干什么用的。下面说明参数的使用:参数1:lpThreadAttributes:指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows98中忽略该参数。在WindowsNT中,NULL使用默认安全性,不可以被子线程继承,否则需要定义一个结构体将它的bInheritHandle成员初始化为TRUE,一般是NULL。参数2:dwStackSize,设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据需要动态延长堆栈的大小。参数3:lpStartAddress,指向线程函数的指针,即函数入口。形式:@函数名,函数名称没有限制,但是必须以下列形式声明:DWORDWINAPI函数名(LPVOIDlpParam),格式不正确将无法调用成功。比如一下程序1中的函数fun1可以这有定义:DWORDWINAPIFun1(LPVOIDIpParameter);//有点麻烦调用的时候是:hThread1=CreateThread(NULL,0,Fun1,NULL,0,NULL);但是这有写函数有点不习惯,有点麻烦,所以可以这么来定义函数:voidfun1();,但是调用的时候要这么写:CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Fun1,NULL,0,NULL);//也就是lpStartAddress要这样通过LPTHREAD_START_ROUTINE转换。参数4:lpParameter:向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。比如:你要向函数fun1传递一个字符串,可以这么来写程序:程序如下:#include<Windows.h>#include<iostream>#include<stdio.h>#include<conio.h>#include<process.h>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\n",(char*)p);}向控制台打印:参数5:dwCreationFlags:线程标志,可取值如下(1)CREATE_SUSPENDED(0x00000004):创建一个挂起的线程,注:传0x00000004(2)0:表示创建后立即激活。(3)STACK_SIZE_PARAM_IS_A_RESERVATION(0x00010000):dwStackSize参数指定初始的保留堆栈的大小,否则,dwStackSize指定提交的大小。该标记值在Windows2000/NTandWindowsMe/98/95上不支持。参数6:lpThreadId:保存新线程的id。(各参数说明完毕,注:参数说明来自百度文档)函数返回值:函数成功,返回线程句柄;函数失败返回false。若不想返回线程ID,设置值为NULL。到这你会在vc里面创建线程了吗?学习以上知识后,我们就会创建线程了,接下来我们要让线程同步与互斥执行。三、让线程同步与互斥执行为了能够会使用线程同步与互斥执行,我们需要对一下函数进行研究学习。1、信号量的创建(基础是要了解什么是信号量以及信号量的控制)函数是:CreateSemaphore函数原型:HANDLECreateSemaphore(LPSECURITY_ATTRIBUTESlpSemaphoreAttributes,//SDLONGlInitialCount,//initialcountLONGlMaximumCount,//maximumcountLPCTSTRlpName//objectname);参数说明如下:lpSemaphoreAttributesSECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByValAsLong,并传递零值)——表示采用不允许继承的默认描述符。该参数定义了信号量的安全特性...