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与线程同步

最新文章

  1. ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
  2. 那些年蹚过的坑(c++)
  3. django框架的models
  4. Java EE 参考文档及sample
  5. COURSES(poj 1469)
  6. 在DWZ框架中整合kindeditor复文本框控件
  7. C#创建https请求并使用pfx证书
  8. BagTest
  9. The Hardest Problem Ever(字符串)
  10. CGI原理解析系列之中的一个----CGI怎样获取WEBserver数据
  11. 页面设计-数据列表 DataGrid
  12. 从零开始开发一个简易的类vue-cli构建工具
  13. this指针的初运用
  14. Vue.js 2.x笔记:安装与起步(1)
  15. poj1947(树形背包)
  16. [android] 测试的相关概念
  17. startSSL 申请免费的SSL证书
  18. JAVA中使用浮点数类型计算时,计算精度的问题
  19. Android-Kotlin-Activity直接的跳转
  20. 新的Blog

热门文章

  1. python无法安装cv2的解决办法
  2. sqlite:多线程操作数据库“database is locked”解决方法
  3. rust borrow and move
  4. Codeforces 762C Two strings 字符串
  5. [HAOI 2011] Problem A
  6. AtCoder Regular Contest 070F:Honest Or Unkind
  7. javascript中原型链存在的问题
  8. request实现请求转发
  9. webapi 跨域 (MVC-Web API: 405 method not allowed问题 )
  10. JavaScript高级程序设计学习笔记第一章