Absurd писал(а):Если треду назначен приоритет BACKGROUND
Фоновым уже приоритет оказался, а только что таким был сам поток.
Absurd писал(а):Приоритет это мнение программиста о том насколько значимым является данный тред. Есть еще мнение ОС, которая собственно и решает кому сколько давать.
Сколько дать конкретно и насколько важна сама задача. Система обязана обслужить все потоки, разумеется она не может всегда давать, сколько хочет программист. Плюс есть мнение о приоритете пользователя, разработчика, системы и реальность. И если быстрое выполнение такого то потока вдруг стало необходимым для быстрой работы более приоритетного, так пусть повышает. Сами говорите, что временно и по ситуации. Что важней: сохранение жизни экипажа, или экономия топлива? Конечно не до жиру, быть бы живу. А ситуация вдруг сложилась так, что экономить топливо нужно именно для того, чтоб сохранить жизнь экипажа? Тогда его будут экономить всеми возможными способами. А теперь вопрос: как поведёт себя система, если быстрое исполнение среднеприоритетного потока нужно для быстрой работы малоприоритетного, а процессорное время ждёт ещё десятка два потока с почти высшим приоритетом?
Absurd писал(а):И это не означает что secondary thread действительно существует как понятие уровня операционной системы. Это классификация программиста: этот тред делает главную работу, этот - вспомогательный. Для ОС они равнозначны.
Нет. Первичность и вторичность потоков зависит от того, как и чем они запускаются. Первичный запускается системой при старте процесса и завершается при закрытии процесса, вторичные же запускаются в любой момент другими потоками своих процессов и завершаются также в любой момент вне какой либо связи с запуском и завершением процесса.
Absurd писал(а):В общем случае background thread встречается в публикациях в два раза чаще, чем secondary thread
В твоих и в публикациях тебе подобных, то есть по разряду сепулек и декавилек. Ты их определить попробуй. Приоритет - штука достаточно переменная и для определения самого потока не годная. Но годная для редкой выдачи потоку процессорного времени и при этом не требующая явного слыпа. А нет определения - нет и разновидности потоков.
Absurd писал(а):Я кажется понял что ты называешь первичным потоком - это тот поток который был создан в результате выполнения CreateProcess. Но он ничем не отличается от других потоков. Есть мнение что завершение этого "первичного" потока завершает работу программы, но оно ошибочно. ОС удаляет процесс когда _все_ треды программы завершили свою работу. Она их не отличает друг от друга. Но есть такой ньанс что все треды убиваются библиотекой C Runtime после выхода из функции main()/WinMain().
А она в первичном потоке. То есть при завершении первичного потока прибиваются вторичные и завершается весь процесс. Что и требовалось доказать. А что небольшая техническая задержка возникает и фактическое закрытие происходит, когда ОС выполнит принудительное завершение вторичных потоков, так это иначе просто фиг реализуешь. Если бы потоки не различались, то процесс продолжался бы и после завершения main/WinMain, пока все функции вторичных потоков не выполнят return. А ещё, не все потоки имеют очереди сообщений.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.