▍1. VC6.0 使用信号量Semaphore实现线程的同步
VC6.0 使用信号量Semaphore实现线程的同步,使用信号量实现线程同步,设置访问保护对象的最多线程数为2,确定当前已经启动运行的线程数目,可以创建线程。 CWinThread* pThread=AfxBeginThread(ThreadProc,&m_Edit);//开辟一个工作线程, int thread=0;//全局变量记录当前运行线程的数目 CSemaphore mySemaphore(2,2);//创建CSemaphore类对象 UINT ThreadProc(LPVOID pParam)//工作线程入口函数 { CEdit *pedit=(CEdit*)pParam; CString str; thread++;//线程数目加1 str.Format("%d",thread); pedit->SetWindowText(str);//编辑框显示 CSingleLock singlelock(&mySemaphore);//创建CSingleLock类对象 singlelock.Lock();//计数器初始值减1 MessageBox(NULL,"信号量控制访问资源线程数","提示",MB_ICONWARNING);//弹出对话框 thread--;//线程数目减1 str.Format("%d",thread); pedit->SetWindowText(str);//编辑框显示 return 0; }