软盟收藏
 用户中心
 加盟指南
 网上订购
软件联盟 商业源码 名企管理 策划方案 募捐会馆 会员服务 源码下载 开发文档 SAP教程 房地产策划 商业图库
软件联盟现时:2010年9月8日 星期三 位于: 源码文档- 开发文档 → 开发技术(其它开发)
多线程验证DoubleCheckedLocking
2006年11月3日  作者:  商业源码:策划管理,名企内参,咨询顾问  浏览选项:    本文已被浏览 3540 次
多线程验证DoubleCheckedLocking的线程安全
如果没有出现提示:"单件失败",就说明当前的测试是成功的,
先开了100条线程,不知道能不能说明问题 :)

实现方法(点击下载源码)

class CStaticThread : public CObject  

{//在类中作一个Static线程,每需要一个新线程,都需要new一下 

public: 

 DWORD GetThreadID() {return m_dwThreadID;} 

 BOOL RunThread(); 

 BOOL StopThread(DWORD dwThreadID); 

 static void SetEventRunTogether(BOOL bIn); 

private: 

 void SetThreadID(DWORD dwThreadID) {m_dwThreadID = dwThreadID;} 

 static DWORD WINAPI ThreadBuildIn(LPVOID lpArg); 

 virtual DWORD ThreadBuildIn(void); 

 void Clear(); 

 void SetFlag_Stop(BOOL bIn) {m_bStop = bIn;} 

 BOOL GetFlag_Stop() {return m_bStop;} 

 HANDLE GetEventRunTogether(); 

private: 

 DWORD m_dwThreadID;//自定义线程ID 

 BOOL m_bStop;//要求线程停止的标记(线程主动退出的依据) 

 HANDLE m_hThread;//线程句柄 

 HANDLE m_hevtThreadStop;//线程停止事件 

 static HANDLE m_hevtThreadRunTogether;//线程并发事件 

public: 

 CStaticThread(DWORD dwThreadID); 

 virtual ~CStaticThread();

}; 

 POSITION pos = m_ThreadList.GetHeadPosition();

 while(pos) 

 { 

  pThread = m_ThreadList.GetNext(pos); 

  pThread->RunThread(); 

 }

 CString csMsg = ""; 

 csMsg.Format("您在调试环境下看最后一条\"ThreadID XXX Run\"结束的时候,就可以按下并发测试了"); 

 //这里还要加个函数用来判断所有线程是否都在等并发事件才人性化 

 //改天加上,如果程序没有BUG的话,我想应该可以说明(关于Singleton的)问题了

 AfxMessageBox(csMsg); 

}

void CMainDlg::OnButton3() 



 if(AfxMessageBox("如果您已经按下了准备线程的按钮,并且得到了线程准备好的提示,请您按下\"确定\"进行并发测试线程安全", MB_OKCANCEL) == IDOK) 

 { 

  CStaticThread::SetEventRunTogether(TRUE); 

 } 

}
 发布人:linkin
 [ → 我要发表文章 ]
上篇文章:解决多国语言乱码的编码问题
下篇文章:专家分享Oracle数据库业务优化心得
→ 主题所属分类:  开发技术 → 其它开发 → 『关闭窗口』
 热门文章
 穿透防火墙的数据传输源码 (4615)
 Delphi中如何调用VC++创建的动态链接库? (4590)
 使用Delphi和WebServices技术开发短信应用 (4385)
 把.NET部署到没有安装Fram的机器上 (4328)
 用DELPHI实现的黑客程序技巧集锦 (4182)
 最短路径算法源码(VB源码教程) (4135)
 ASP.NET添加客户端代码的几种方法 (4112)
 提高ASP.NET性能的若干方法 (4080)
 利用随机数加密字串的算法(vb) (3942)
 Java常见问题大全集 (3941)
 最近更新
 Google店大欺客:伪开源Android危机四伏 (2月3日)
 从各大软件公司笔试压轴题学习SQL语句 (12月31日)
 Oracle并行查询发挥多CPU的威力 (7月8日)
 SQL Server 2008企业视频讲座 (12月5日)
 一个完美的中文大写日期转换函数 (8月1日)
 海量数据库的查询优化及分页算法方案 (8月1日)
 用友ERP-NC精华实用SQL脚本之:快速复制公司的... (2月21日)
 IC卡写卡操作的源码(深圳达实公司) (3月16日)
 专家分享Oracle数据库业务优化心得 (1月15日)
 多线程验证DoubleCheckedLocking (11月3日)
 文章搜索
搜索选项:            
  → 评论内容 (点击查看)
(没有相关评论)
  → 发表我的评论
您的姓名:  您的E-mail:

评论内容:
发表评论:  
关于我们咨询反馈合作媒体免费金币行业管理名企内参矢量图库素材模板客户名录快乐淘宝广告合作网站地图
本站总访问量: 19762561 人次 ┋ 围观高峰 948 人在线 ┋ 现时围观 41 人
商业源码:策划管理,名企内参,咨询顾问 [节能型] ┋联系邮件 服务QQ:308071592
软件创业联盟 ©2002-2018 版权所有 浙ICP备09028508号 电话:0571-8590-3599