Pull to refresh

Comments 3

Потоки с одинаковыми приоритетами запускаются в порядке очереди.

Ой ли? Кажется, что в разных планировщиках используются разные алгоритмы. Вроде даже есть теорема, что гарантия прогресса многопоточного приложения существует только если все потоки имеют равный приоритет и получающий квант поток выбирается случайным образом из пула готовых.
Зря минусуете, ну или кто-то очень педантично подходит к вопросу :)
Потоки действительно будут созданы в порядке очереди, но вот квант процессорного времени они получат совершенно не согласуясь с порядком создания. Поэтому первым может оказаться запущен любой, хоть третий, хоть десятый поток.

простой пример:
cpp.sh/8bguv
и вывод в моём случае
x = x = 02
x =
1x = 3
x = 5
x = 4

x = 7
x = 8
x = 9
x = 6
синхронизации доступа к терминалу специально не сделано, из-за этого и артефакты.
Спасибо за подробное разъяснение с примерами — наконец-то разложил по полочкам в голове всю эту многопоточную кашу. Надо будет через неделю ещё раз прочитать для закрепления.
Sign up to leave a comment.