0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 9
|
|
1 | |
Многопоточное программирование24.10.2017, 11:52. Показов 1285. Ответов 1
Метки нет Все метки)
(
Здравствуйте, читал литературу по C# с целью разобраться как сделать многопоточную программу, но намешал каши в голове. Не могли бы вы ответить на следующие вопросы?
Предположим, я создаю приложение WinForms для вывода на экран результата работы одного метода. Метод с помощью цикла последовательно изменяет цвет пяти PictureBox в зависимости от переменной цикла. Без создания дополнительного потока цвет боксов изменяется только после выполнения всего цикла, то есть одновременно. То есть, необходимо создать новый поток для этого метода. 1) Создать поток командой new Thread(...) или с помощью Task? Есть ли отличие между Thread и Task или по сути это одно и то же? 2) Как именно работает Thread? Он направляет разные ветви приложения различным ядрам процессора или периодически "притормаживает" одну из ветвей, чтобы дать ресурсы процессора другой? 3) В дальнейшем возникнет необходимость обработать большую коллекцию List<T> в исполняемом методе, я предполагал сделать это с помощью параллельного For(). Нужно ли как-то ограничивать выполнение основной графической формы для выделения ресурсов на обработку For()?
0
|
|
24.10.2017, 11:52 | |
Ответы с готовыми решениями:
1
Многопоточное программирование Асинхронное vs. Многопоточное программирование Что такое многопоточное программирование? Многопоточное программирование по Шилдту: разобрать код |
2 / 2 / 0
Регистрация: 23.09.2008
Сообщений: 54
|
|
24.10.2017, 15:26 | 2 |
Цитата из stackoverflow "Thread представляет собой физический, системный поток выполнения (за исключением SQL Server под .NET 2.0, да). А Task — это штука, которая по сути перепрыгивает из потока в поток, а зачастую и вовсе не находится ни в каком потоке! В результате у вас может быть всего 10 активных потоков, но тысячи Task'ов.
Например, если вы делаете await на операцию чтения из сети, то он время ожидания прихода ответа от сервера ваша асинхронная функция вовсе не занимает никакого потока, а существует в спящем виде как обыкновенный объект где-то в памяти. Когда ответ реально приходит, функция находит какой-то поток (при обычных условиях это главный поток, но может быть и какой-то посторонний, если вы попросите), и продолжает выполнение на нём дальше. "
0
|
24.10.2017, 15:26 | |
Помогаю со студенческими работами здесь
2
Многопоточное Многопоточное скачивание Многопоточное приложение многопоточное вычисление Многопоточное сжатие файла Многопоточное копирование файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |