当前位置: 首页 > news >正文

郑州网站推广价西安做网站朋朋

郑州网站推广价,西安做网站朋朋,换了家公司做网站如何接入备案,人工智能培训心得体会多个线程访问临界区时,可以使用临界区对象。临界区对象是一个独占性共享资源,任一时刻只有一个线程可以拥有临界区。拥有临界区的线程可以访问被保护起来的资源或代码段,其他希望进入临界区的线程将被挂起等待,直到拥有临界区的线…

多个线程访问临界区时,可以使用临界区对象。临界区对象是一个独占性共享资源,任一时刻只有一个线程可以拥有临界区。拥有临界区的线程可以访问被保护起来的资源或代码段,其他希望进入临界区的线程将被挂起等待,直到拥有临界区的线程放弃临界区时为止。

CCriticalSection类的用法:

方法一:

(1)定义CCriticalSection类的一个全局对象(以使各个线程均能访问):

       CCriticalSectioncritical_section;

(2)在访问临界区之前,调用CCriticalSection类的成员函数Lock()获得临界区:

        critical_section.Lock();

在线程中调用该函数来使线程获得它所请求的临界区。如果此时没有其他线程占有临界区,则调用Lock()的线程获取临界区;否则,线程即将挂起,并放入到一个系统队列中等待,直到当前拥有临界区的线程释放了临界区时为止。

  (3)在本线程中访问临界区中的共享资源。

(4)访问临界区完毕后,使用CCriticalSection类的成员函数UnLock()来释放临界区:

      critical.section.UnLock();

 

方法二:

  与同步辅助类CSingleLock或CMutiLock类一起使用

(1)定义CCriticalSection类的一个全局对象(以使各个线程均能访问):

       CCriticalSection critical_section;

(2)在访问临界区之前,定义CSingleLock类的一个对象,并将critical_section的地址传送给构造函数:

         CSingleLocksinglelock(&critical_section);

(3)使用CSingleLock类的成员函数Lock()请求获得临界区:

        singlelock.Lock();

(4)在本线程中访问临界区中的共享资源。

(5)调用CSingleLock类的成员函数UnLock()来释放临界区:

       singlelock.UnLock();


方法一:

定义一个CCriticalSection类的一个全局变量和一个共享资源的字符数组g_Array
CCriticalSection critical_section;
TCHAR g_Array[10] = _T("\0");

定义2个线程,共享g_Array数组资源
UINT WriteA(LPVOID pParam);
UINT WriteB(LPVOID pParam);
//pParam为创建afxBeginThread()函数的第二个参数
UINT WriteA(LPVOID pParam) 
{CEdit *pEdit = (CEdit*)pParam; //pEdit为控制EDITA编辑框pEdit->SetWindowText(_T(""));critical_section.Lock(); //上锁//临界区for (int i = 0; i < 9; i++){g_Array[i] = _T('A');pEdit->SetWindowText(g_Array);Sleep(1000);}critical_section.Unlock();//解锁
	return 0;
}UINT WriteB(LPVOID pParam)
{CEdit *pEdit = (CEdit*)pParam;pEdit->SetWindowText(_T("\0"));critical_section.Lock();//临界区资源(g_Array)for (int i = 0; i < 9; i++){g_Array[i] = _T('B');pEdit->SetWindowText(g_Array);Sleep(1000);}critical_section.Unlock();return 0;
}
//按钮启动线程A
void CThreadLockDlg::OnBnClickedWritea()
{// TODO:  在此添加控件通知处理程序代码AfxBeginThread(WriteA, &m_CEditA); //参数表示EDIT控件变量
}//启动线程B
void CThreadLockDlg::OnBnClickedWriteb()
{// TODO:  在此添加控件通知处理程序代码AfxBeginThread(WriteB, &m_CEditB);
}


   


http://www.yayakq.cn/news/667612/

相关文章:

  • 上海网站商城建设加盟哪家装修公司好
  • 网站建设答辩ppt模板台州外包加工网
  • 网站怎么做移动的图片网页设计实验报告书
  • 北京市网站建设东莞住建局官方网站
  • 网站流量降低社保局网站建设意义
  • 西安网站建设培训班谷歌网站流量分析
  • 中山做网站哪家便宜视频课程网站建设
  • 用vultr做网站长沙网站
  • 江苏网站建设价格低月夜直播在线观看视频免费播放
  • 禁忌网站佛山手机网站建设优化
  • 智慧旅游网站建设网站能搜索到
  • 济南专业网站建设咨询织梦能做视频网站吗
  • 《教师网站建设与应用管理制度》网站建设肆金手指排名6
  • 福州仓前网站建设书吧网站设计论文
  • 网站模板 阿里短视频推广渠道
  • wps哪个工具做网站中国电子商务中心官网
  • 网页设计制作一个餐饮网站动漫设计与制作大学
  • 网站推广临沂深圳中小企业网站制作
  • 网站如何推广方案策划企业咨询公司管理
  • 中文网站建设模板下载谷歌的网站打不开
  • 网站海报做一张多少钱网站建设与管理的通知
  • 做旅游攻略去什么网站自助网站搭建
  • 给个网站手机能看的阅读app软件开发
  • 盐城企业网站建设网站布局案例
  • 杭州建设企业网站wordpress二级开发
  • 江苏有哪些做网站建设的公司学习网页设计
  • 宁波h5建站裕顺网站建设
  • 宁波做网站的公司哪家好阿里云静态网站托管
  • 做30个精品网站大大大大大大大dj
  • 七宝网站建设网络营销服务有哪些