Очередь с приоритетом сделать многопоточной - 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();
}
}
}