Я не прошу никого делать это домашнее задание для меня, но я поднимаю его, потому что это очень хорошее практическое введение в C # и многопоточность, но в то же время я чувствую, что это, возможно, слишком просто.
Это действительно лучший способ научить многопоточности? какие ключевые концепции потоков «утеряны» в этом упражнении, что новые программисты, впервые использующие потоки, скорее всего, не заметят?
У меня есть много теоретических знаний о потоках, но мне не приходилось делать это самостоятельно в прошлом, у кого-нибудь есть какие-то предостережения для меня при написании?
Вот ссылка на исходное задание
и вот текст целей:
1) Создать универсальный потокобезопасный
круговой класс очереди и создать графический интерфейс
использовать его (см. следующий раздел). В этом
контекст, потокобезопасность означает, что каждый
операция (метод), которая изменяет
содержимое очереди должно быть
выполняется только одним потоком за раз
во избежание повреждения данных.
круговая очередь реализована в виде
массив фиксированного размера, где начало
и конец очереди являются индексами в
массив. Когда очередь заполняется,
начало и конец очереди будет
перейти к более высоким значениям, как элементы
добавил и в конечном итоге обернуть
первый индекс в массиве для повторного использования
память. Этот класс также должен
бросить исключение (указано ниже)
вызывающей стороне, если операция
недействительным.
2) Создать графический интерфейс для управления
две нити в производителе-потребителе
мода. GUI сможет начать
и запустить и остановить оба производителя
и потребительские темы и контролировать
скорость, с которой они изменяют
GenericCircularQueue.