Очередь с приоритетом сделать многопоточной - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Есть реализованная очередь с приоритетом. Реализованы операции вставки, извлечения и изменения приоритета. Теперь встала задача, чтобы сделать эту очередь многопоточной. Один поток должен создать очередь, добавлять туда элементы и изменять приоритет. Второй поток должен извлекать элементы. В потоках вообще полный ноль. Подскажите пожалуйста как это сделать. Если можно, на небольшом примере.

Решение задачи: «Очередь с приоритетом сделать многопоточной»

textual
Листинг программы
//сам список
class PriorityList<TItem>
{
   public void Add(int priority, TItem item){//добавление}
   public TItem Get(){//достать самый верхний и удалить}
   public void ChPriority(int oldPriority, TItem, int newPriority){//изменение приоритета}
}
//управляющий класс
public class Manager<TItem>
{
   PriorityList<TItem> list = new PriorityList<TItem>();
   private object locker = new object();
   public void Add(TItem item)
   {
      lock(locker)
      {
         list.Add(item);
      }
   }
 
   public Titem Get()
   {
      Task<TItem> task1 = new Task<TItem>(()=>GetTask());
      task1.Start();
      return task1.Result;
   }
   private TItem GetTask()
   {
      lock(locker)
      {
         list.Get();
      }
   }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы