阅读量:0
在C#中,处理并发问题的一种常见方法是使用锁(lock)或者并发集合(Concurrent Collections)。以下是两种方法的简单示例:
- 使用锁(lock):
using System; using System.Collections.Generic; using System.Threading; class Lottery { private readonly object _lock = new object(); private List<int> _numbers; public Lottery() { _numbers = new List<int>(); } public void AddNumber(int number) { lock (_lock) { _numbers.Add(number); } } public int GetRandomNumber() { lock (_lock) { Random random = new Random(); int index = random.Next(_numbers.Count); return _numbers[index]; } } }
- 使用并发集合(Concurrent Collections):
using System; using System.Collections.Concurrent; using System.Threading; class Lottery { private ConcurrentBag<int> _numbers; public Lottery() { _numbers = new ConcurrentBag<int>(); } public void AddNumber(int number) { _numbers.Add(number); } public int GetRandomNumber() { Random random = new Random(); int[] numbersArray = _numbers.ToArray(); int index = random.Next(numbersArray.Length); return numbersArray[index]; } }
这两种方法都可以有效地处理并发问题。使用锁(lock)时,需要确保在对共享资源进行操作时始终使用相同的锁对象。而使用并发集合时,可以利用内置的线程安全特性,从而简化代码。
请注意,这些示例仅用于说明如何处理并发问题。实际应用中,您可能需要根据具体需求进行调整。