基于多线程环境下值的递增操作--原子操作.doc
《基于多线程环境下值的递增操作--原子操作.doc》由会员分享,可在线阅读,更多相关《基于多线程环境下值的递增操作--原子操作.doc(4页珍藏版)》请在三一文库上搜索。
1、基于多线程环境下值的递增操作-原子操作为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表示有今天多少个用户登录,如果这个值不等于我们启动的线程个数,那显然说明这个程序是有问题的。整个程序代码如下:cppview plaincopy#include#include#includevolatilelongg_nLoginCount;/登录次数unsignedint_stdcallFun(void*pPM);/线程函数constintT
2、HREAD_NUM=10;/启动线程数unsignedint_stdcallThreadFun(void*pPM)Sleep(100);/someworkshouldtodog_nLoginCount+;Sleep(50);return0;intmain()g_nLoginCount=0;HANDLEhandleTHREAD_NUM;for(inti=0;itipleObjects(THREAD_NUM,handle,TRUE,INFINITE);printf(有%d个用户登录后记录结果是%dn,THREAD_NUM,g_nLoginCount);return0;程序中模拟的是10个用户登录,
3、程序将输出结果:和上一篇的线程报数程序一样,程序输出的结果好象并没什么问题。下面我们增加点用户来试试,现在模拟50个用户登录,为了便于观察结果,在程序中将50个用户登录过程重复20次,代码如下:cppview plaincopy#include#includevolatilelongg_nLoginCount;/登录次数unsignedint_stdcallFun(void*pPM);/线程函数constDWORDTHREAD_NUM=50;/启动线程数DWORDWINAPIThreadFun(void*pPM)Sleep(100);/someworkshouldtodog_nLoginCou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 多线程 环境 递增 操作 原子
链接地址:https://www.31doc.com/p-3417273.html