.NET 3.x Синхронизация доступа к общим данным - C#
Формулировка задачи:
Вечер добрый, товарищи.
Возникло три вопроса.
Первый.
Возможно ли создать массив byte[] с более чем 2 млн. элементов.
Второй.
Синхронизация доступа к общим данным. Каков наиболее удачный вариант синхронизации в случае двух потоков к очереди, в случае, если 1й поток производит запись в очередь, а 2й - читает элемент и извлекает его из очереди.
В голову пришёл лок lock:
Какие ещё варианты могут быть.
Третий.
Возможно ли пример иp предыдущего пункта модифицировать AutoResetEvent-ми с той целью, чтобы поток, записавший цифру в очередь уведомлял об этом второй поток, а тот уже проводил извлечение из очереди?
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Queue<int> myQueue = new Queue<int>(); Random rand = new Random(); for(int i = 0; i < 5; i++) { new Thread(() => { lock (myQueue) { myQueue.Enqueue(rand.Next(10)); } } ).Start(); new Thread(() => { if(myQueue.Count > 0) { Console.WriteLine("Element: {0}", myQueue.Dequeue()); } else { Console.WriteLine("No element"); } } ).Start(); } } } }
Решение задачи: «.NET 3.x Синхронизация доступа к общим данным»
textual
Листинг программы
byte[] bytes = new byte[2000001];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д