Если у вас есть только одно ядро, то единственный способ, которым многопоточность может помочь вам, - это если куски этой работы зависят от чего-то другого, кроме процессора, поэтому один поток может выполнить некоторую работу, в то время как другой ожидает данных отдисковое или сетевое подключение.
Если ваше приложение имеет графический интерфейс, то оно может выиграть от многопоточности, в то время как обработка будет выполняться не так быстро (на самом деле медленнее, хотя, вероятно, и незначительно, если задача)очень длинный), тем не менее он может реагировать на пользовательский ввод.
Если у вас два или более ядер, вы также можете выиграть в операциях с привязкой к ЦП, хотя это может варьироваться от тривиального до невозможного в зависимости оттолько что это за операция.Это не имеет отношения к вашему случаю, но в целом стоит подумать, можно ли в дальнейшем писать код на многоядерной системе.
Повышение приоритета, вероятно, плохая идея, особенно если у вас только одно ядро (одно преимущество многоядерных систем состоит в том, что люди, которые имеют более высокие приоритеты, не могут нанести такой большой ущерб).
Все потоки имеют приоритеты, которые являются фактором как приоритета их процесса, так и их приоритета в этом процессе.Поток с низким приоритетом в процессе с высоким приоритетом превосходит поток с высоким приоритетом в процессе с низким приоритетом.
Планировщик распределяет срезы ЦП циклически в потоки с наивысшим приоритетом, которые работают дляделать.Если остались ЦП (что в вашем случае означает, что если для этого приоритета требуется ноль потоков, которые должны быть запущены), то он распределяет срезы до следующего наименьшего приоритета и т. Д.
Большинство извремя, большинство потоков в любом случае мало что делает, что видно из того факта, что большая часть времени использования ЦП в большинстве систем ниже отметки 100% (гиперпоточность искажает это, внутреннее планирование в ядрах означает, что гиперпоточная система можетбыть полностью насыщенным и, кажется, работает только на 70%).Как бы то ни было, обычно все делается, и поток, у которого неожиданно много работы, будет делать это с обычным приоритетом, почти в то же время, что и при более высоком.
Однако, хотя выгода для этого занятого потока вышеприоритет, как правило, мало или ничего, декремент велик.Поскольку это единственный поток, который получает любое время процессора, все остальные потоки застряли.Все остальные процессы поэтому зависают на некоторое время.В конце концов, планировщик замечает, что все они ждали около 3 секунд, и исправляет это, повышая их до наивысшего приоритета и предоставляя им большие срезы, чем обычно.Теперь у нас есть всплеск активности, так как потоки, у которых нет времени, внезапно становятся потоками с наивысшим приоритетом, которым требуется процессорное время.В каждом потоке есть поток, кроме высокоприоритетного, и система перестает блокироваться, хотя, вероятно, все еще много приложений, показывающих «Не отвечает» в заголовках.Это далеко от идеала, но это эффективный способ справиться с потоком с более высоким, чем обычно, приоритетом, который так долго захватывает ядро.
Потоки постепенно падают в приоритете, и в итоге мы возвращаемся кситуация, когда единственный поток с более высоким приоритетом является единственным, который может работать.
Для дополнительного удовольствия, если бы наш поток с высоким приоритетом каким-либо образом зависел от сервисов, предоставляемых потоками с более низким приоритетом, он бы застрялжду от них.Надеюсь, таким образом, что это заблокировало и предотвратило нанесение какого-либо ущерба, но, вероятно, нет.
В целом, к приоритетам потоков следует подходить с большой осторожностью, а приоритеты процессов - еще более.Они действительно действительны только в том случае, если они дают быстрый результат, и они либо необходимы для работы других потоков (например, некоторые процессы ОС будут выполняться с более высоким приоритетом, потоки финализатора в .NET будут выше, чем остальная часть процесса,и т. д.) или если задержки в миллисекундах могут испортить ситуацию (для этого требуется интенсивная работа с мультимедиа).