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

网投网站如何建设软件开发工程师

网投网站如何建设,软件开发工程师,网址大全123上网导航网址123,crm管理系统销售临界区 每个线程都有自己的栈,而局部变量是存在在栈中的,这就意味着每个线程都有一份自己的”局部变量“,如果线程仅仅只是使用自己的”局部变量“那么就不会有线程安全问题,那如果多个线程使用一个全局变量呢? 我们用…

临界区


每个线程都有自己的栈,而局部变量是存在在栈中的,这就意味着每个线程都有一份自己的”局部变量“,如果线程仅仅只是使用自己的”局部变量“那么就不会有线程安全问题,那如果多个线程使用一个全局变量呢?

我们用一个多线程卖票问题来看下全局变量下的线程安全问题

#include<iostream>
#include<windows.h>using namespace std;int g_num = 1000;DWORD WINAPI ThreadProcOne(LPVOID lpParameter) {while (g_num > 0) {cout << "线程1正在卖票,还剩下" << g_num << "张票\n";g_num--;cout << "线程1买出一张,还剩下" << g_num << "张票\n";}return 0;
}DWORD WINAPI ThreadProcTwo(LPVOID lpParameter) {while (g_num > 0) {cout << "线程2正在卖票,还剩下" << g_num << "张票\n";g_num--;cout << "线程2买出一张,还剩下" << g_num << "张票\n";}return 0;
}int main()
{HANDLE hTread[2];hTread[0] = CreateThread(NULL, 0, ThreadProcOne, NULL, 0, NULL);hTread[1] = CreateThread(NULL, 0, ThreadProcTwo, NULL, 0, NULL);// 等待所有线程结束WaitForMultipleObjects(2, hTread, TRUE, INFINITE);return 0;}

在这里插入图片描述
会出现线程安全问题,同一张票被两个人同时买到了,或者是多卖了一张票

解决思路

使用临界资源 (多个线程其中一个线程在访问全局变量时,其他线程不得访问)

  1. 创建全局变量
    • CRITICAL_SECTION cs;
  2. 初始化全局变量
    • InitializeCriticalSection(&cs);
  3. 实现临界区
    • EnterCriticalSection(&cs);
    • LeaveCriticalSection(&cs); // 使用临界资源

使用临界资源修改后的代码

#include<iostream>
#include<windows.h>using namespace std;int g_num = 1000;
// 创建临界区
CRITICAL_SECTION cs;DWORD WINAPI ThreadProcOne(LPVOID lpParameter) {EnterCriticalSection(&cs);while (g_num > 0) {cout << "线程1正在卖票,还剩下" << g_num << "张票\n";g_num--;cout << "线程1买出一张,还剩下" << g_num << "张票\n";}LeaveCriticalSection(&cs);return 0;
}DWORD WINAPI ThreadProcTwo(LPVOID lpParameter) {EnterCriticalSection(&cs);while (g_num > 0) {cout << "线程2正在卖票,还剩下" << g_num << "张票\n";g_num--;cout << "线程2买出一张,还剩下" << g_num << "张票\n";}LeaveCriticalSection(&cs);return 0;
}int main()
{HANDLE hTread[2];// 初始化临界区InitializeCriticalSection(&cs);hTread[0] = CreateThread(NULL, 0, ThreadProcOne, NULL, 0, NULL);hTread[1] = CreateThread(NULL, 0, ThreadProcTwo, NULL, 0, NULL);// 等待所有线程结束WaitForMultipleObjects(2, hTread, TRUE, INFINITE);return 0;}

现在的代码就不会出现线程安全的问题了

http://www.dtcms.com/wzjs/520883.html

相关文章:

  • 网站目录结构推广网页怎么做的
  • 公司网站建设费用包括哪些百度平台商家
  • 顺德网站建设策划淘宝的17种免费推广方法
  • 做散热网站一键优化软件
  • 中国做跨境电商出口的网站今日最新军事新闻
  • 武汉做医疗器械公司网站的seo试用软件
  • 做服装团购网站深圳网络营销推广外包
  • 在广告公司上班都干嘛南京seo代理
  • 门户网站制作流程做网站用什么软件好
  • 口碑好的做pc端网站谷歌seo培训
  • 网站建设管理维护制度武汉网站推广公司
  • 哪个网站能上传自己做的简历seo全网优化指南
  • 图书馆门户网站建设怎么制作公司网页
  • 宛城区网站制作竞价被恶意点击怎么办
  • 平面设计网站排行榜成都seo招聘
  • 厦门网站建设门户怎么把平台推广出去
  • 网站开发首选十大免费网站推广平台
  • brophp框架做网站微信怎么推广自己的产品
  • 如何做属于自己的领券网站怎么做好市场宣传和推广
  • 泸州工投建设集团有限公司网站厦门百度整站优化服务
  • 网站开发工具概述与比较产品网络推广的方法
  • 12306网站建设超30亿12345浏览器网址大全
  • 滨州建设网站哪个浏览器看黄页最快夸克浏览器
  • 软件下载网站哪个好制作一个网站步骤
  • 门窗网站免费模板技术培训班
  • 上海住房和城乡建设厅网站首页seo能从搜索引擎中获得更多的
  • iis7.5 没有默认网站刷百度关键词排名
  • 小鱼儿外贸建站阿里巴巴国际贸易网站
  • 购物网站流量怎么做短视频运营培训学费多少
  • 盐城市城乡建设局门户网站最大的推广平台