C# 多线程程序隐患
2024-08-30 01:16:06
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; //线程同步与多线程程序中的隐患
namespace Multithreading_hazard
{
class Program
{
private static int stickets = ;
static void Main(string[] args)
{
Thread thread1 = new Thread(SaleTicketThread1);
Thread thread2 = new Thread(SaleTicketThread2);
thread1.Start();
thread2.Start();
Thread.Sleep();
} private static void SaleTicketThread1()
{
while (true)
{
if (stickets>)
{
Console.WriteLine("线程一出票{0}:", stickets--);
}
else
{
break;
}
}
}
private static void SaleTicketThread2()
{
while (true)
{
if (stickets > )
{
Console.WriteLine("线程二出票{0}:", stickets--);
}
else
{
break;
}
}
}
} }
因为两个线程访问了同一个静态变量stickets,线程出票的顺序发生了变化,将会引起数据出现错误.
为了避免这种情况的发生,保证同一时间类只有一个线程访问共享资源;
使用:线程同步:C# Monitor与线程同步
最新文章
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
- 那些年蹚过的坑(c++)
- django框架的models
- Java EE 参考文档及sample
- COURSES(poj 1469)
- 在DWZ框架中整合kindeditor复文本框控件
- C#创建https请求并使用pfx证书
- BagTest
- The Hardest Problem Ever(字符串)
- CGI原理解析系列之中的一个----CGI怎样获取WEBserver数据
- 页面设计-数据列表 DataGrid
- 从零开始开发一个简易的类vue-cli构建工具
- this指针的初运用
- Vue.js 2.x笔记:安装与起步(1)
- poj1947(树形背包)
- [android] 测试的相关概念
- startSSL 申请免费的SSL证书
- JAVA中使用浮点数类型计算时,计算精度的问题
- Android-Kotlin-Activity直接的跳转
- 新的Blog
热门文章
- python无法安装cv2的解决办法
- sqlite:多线程操作数据库“database is locked”解决方法
- rust borrow and move
- Codeforces 762C Two strings 字符串
- [HAOI 2011] Problem A
- AtCoder Regular Contest 070F:Honest Or Unkind
- javascript中原型链存在的问题
- request实现请求转发
- webapi 跨域 (MVC-Web API: 405 method not allowed问题 )
- JavaScript高级程序设计学习笔记第一章