Потокобезопасность, найти ошибки в коде - C#
Формулировка задачи:
Привет всем.
Есть код обхода в ширину. Я хочу использовать пр этом несколько потоков, как я понимаю необходимо сделать очередь потокобезопасной (что я и сделал), но все равно появляется ошибка что очередь уже пуста, когда из нее пытаюсь удалить элемент. Примитивы многопоточности я знаю, только никогда не писал многопоточный код. Помогите пожалуйста.
public void start() { mainQueue.Enqueue(rootState); lock (mainQueue.SyncRoot) { while (mainQueue.Count != 0) { Thread newThread = new Thread(new ThreadStart(this.functionIteration)); newThread.Start(); } } } private void functionIteration() { //ТУт ошибка!!!!! State tempState = (State)mainQueue.Dequeue(); if(..) { mainQueue.Enqueue(s); } }
Решение задачи: «Потокобезопасность, найти ошибки в коде»
textual
Листинг программы
Thread newThread = new Thread(new ThreadStart(this.functionIteration(element)));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д