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

宝安ip设计开发公司seo搜索引擎优化

宝安ip设计开发公司,seo搜索引擎优化,网站承接广告宣传方案,微信公众平台注册官网登录入口临界区 每个线程都有自己的栈,而局部变量是存在在栈中的,这就意味着每个线程都有一份自己的”局部变量“,如果线程仅仅只是使用自己的”局部变量“那么就不会有线程安全问题,那如果多个线程使用一个全局变量呢? 我们用…

临界区


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

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

#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/465318.html

相关文章:

  • 做俄罗斯外贸网站推广百度关键词优化平台
  • 徐州市住房和城乡建设局网站seo网站关键词优化快速官网
  • 焦作市网站建设微信crm系统软件
  • 如何制作网页插件网站关键词排名优化系统
  • 搭建网站 优帮云免费培训机构管理系统
  • 网站开发和优化关系聚名网域名
  • 电子商务网站开发论文站长网站查询工具
  • 中国发达国家还有多远杭州seo外包
  • 图片上传不了网站企业营销管理
  • 南京网站建设方案百度旗下13个app
  • 那些网站做的非常好看国家免费职业技能培训
  • 用fw做网站页面百度企业推广怎么收费
  • 做网站平台多少钱百度seo排名报价
  • 找个人做网站开不出发票怎么办镇江网站建设推广
  • 做app和做网站哪个容易学大教育培训机构电话
  • 网站ui设计学的是什么厦门网络推广外包多少钱
  • 文化网站建设树枝seo
  • 普陀区网站建设整合营销传播
  • 安庆网站设计seo外链在线工具
  • 网站建设南阳网络推广的主要内容
  • wordpress支持h5百度关键词优化词精灵
  • 无锡市建设培训中心网站百度收录排名
  • 做百科需要发哪些网站韩国日本比分
  • 怎么看网站是哪里做的seo是什么意思 为什么要做seo
  • 免费网站源码下载器网页设计代码大全
  • wap网站开发语言网页设计与制作代码
  • 代做论文 软件指导去哪些网站百度官网链接
  • 学完html怎么做网站网页模版
  • 长沙网络营销外包哪家好seo排名优化软件
  • 郑州企业网站推广泰安百度推广公司