线程安全
多个人(多个线程)同时改同一个数据,不会出错、不会算错,就叫线程安全。
为什么会不安全?
多个线程同时抢着修改一个变量
你改一半我也改,数据就乱了、算错了
这就叫 线程不安全
线程安全的作用?
防止多线程同时操作数据,导致结果错误、数据混乱。
最简单的解决办法:lock(锁)
lock = 给数据上一把锁
同一时间,只允许一个线程修改!
——————————————————————————————————————————————————————————————————————
using System;
using System.Threading.Tasks;
class Program
{
static int count = 0;
static readonly object _lock = new object();
static void Main()
{
Parallel.For(0, 1000, i => {
lock (_lock) count++; // 加锁 = 线程安全
});
Console.WriteLine(count); // 永远输出 1000
}
}
————————————————————————————————————————————————————————————————————————
static int count = 0;
共享数字,多线程都会改它
static readonly object _lock = new object();
一把锁,用来保护数据
Parallel.For
1000 个线程同时执行
lock (_lock)
上锁!
同一时间只能有一个线程执行 count++
Console.WriteLine(count)
永远输出 1000(正确结果)

浙公网安备 33010602011771号