Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Критика моей модели многопоточности


Автор: alexplato 18.12.2012, 15:41
Необходима правильная реализация модели многопоточности под .NET4 с учетом заявленных нами требований. При этом нужна
максимальная эффективность, оптимательность и скорость работы модели. Задачу я реализовал, но мне нужна более правильная
и профессинальная реализация (или хотя бы ваша объективная критика моего варианта).

Общие моменты:
1. возможность запускать обработку очереди задач в многопоточном режиме (много потоков,у которых одинаковая логика работы,
берут элементы очереди и обрабатывают, пока очередь не опустеет)
2. возможность выдавать репорт (например лог) из рабочего потока в главный поток (GUI)
3. возможность приостанавливать (ставить на паузу все потоки сразу), а также отменять работу (полностью останавливать все потоки)
При этом желательно иметь возможность видеть что УЖЕ отменены или УЖЕ остановлены ВСЕ потоки (чтобы отображать это для
пользователя). Последнее актуально в виду того, что потоки останавливаются (или ставятся на паузу) не сразу, 
а только когда дойдут до места проверки нужно ли остановиться (или стать на паузу).

while (Form1.pauseFlag)

И

if (worker.CancellationPending)

4. возможность выдавать MessageBox о завершении работы всех потоков (при этом должен выдаваться только 1 MessageBox,
когда завершены ВСЕ потоки, а не для каждого из завершенных потоков.)
5. возможность отображать работающее в данный момент количество потоков, а также размер очереди.

Мой проект в прикрепленном файле.

Автор: infarch 19.12.2012, 12:23
Да, правильная реализация тут весьма нужна... Зачем вы руками синхронизируете очередь если есть замечательный неймспейс System.Collections.Concurrent? Ну и причудливый микс формы и содержания опять таки удручает. Сделайте отдельный контроллер асинхронных процессов, свяжите его с формой событиями. Начните с примитива, и постепенно усложняйте...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)