Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .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? Ну и причудливый микс формы и содержания опять таки удручает. Сделайте отдельный контроллер асинхронных процессов, свяжите его с формой событиями. Начните с примитива, и постепенно усложняйте... |