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

阿里云网站建设网页广告调词平台多少钱

阿里云网站建设,网页广告调词平台多少钱,PHP 网站开发 重点知识,贵阳哪里可以做网站临界区 每个线程都有自己的栈,而局部变量是存在在栈中的,这就意味着每个线程都有一份自己的”局部变量“,如果线程仅仅只是使用自己的”局部变量“那么就不会有线程安全问题,那如果多个线程使用一个全局变量呢? 我们用…

临界区


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

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

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

相关文章:

  • 代刷网站开发seo手机关键词排行推广
  • 个人网站需不需要搭建服务器站内搜索工具
  • 个人站长网站下载浏览器
  • 淘宝网站开发目前病毒的最新情况
  • 网站后台管理破解百度的首页
  • 濮阳市网站建设公司域名注册哪个平台比较好
  • 注册公司网站怎么收费网站建设哪家好
  • 网站建设项目工作分解软文范文200字
  • 在线文字编辑器被逆冬seo课程欺骗了
  • 竞价托管多少钱广州中小企业seo推广运营
  • wordpress页脚小工具网站优化排名优化
  • 自己做的网站如何联网站长工具域名
  • 做网站常用到的css标签品牌营销平台
  • seo如何推广网站b站软件推广大全
  • 网站制作留钱软件培训机构
  • 番禺微网站建设自己建网站需要多少钱
  • 天津市建筑信息平台什么是搜索引擎优化?
  • 宁慈建设网站网络营销专业大学排名
  • 做本地网站需要什么资质合肥网络公司排名
  • 响应式网站一般做几个尺寸在线生成个人网站
  • 怎么注册网站免费的吗培训网站排名
  • 最适合seo的网站源码全球外贸采购网
  • 政务网站建设万能搜索引擎网站
  • 上海培训网站建设怎样进行关键词推广
  • 用返利网站做爆款阿拉营销网站
  • 为什么现在好多人嘲讽做核酸seo关键词排名优化销售
  • ip地址进入网站怎么做的百度热线
  • 株洲新闻网红网株洲站b站推广网站入口
  • 网站建设及推广惠州网络推广
  • 微信营销网站模板千锋教育培训多少钱