У нас есть код, который использует sched_yield
внутри цикла.Когда мы делаем это, мы, кажется, получаем более медленную производительность других потоков, в частности тех, которые связаны с вызовами ядра (такими как IO и мьютекс / обработка событий).Я пытаюсь определить точную причину такого поведения.
Могут ли чрезмерные обращения к sched_yield
привести к узкому месту в ядре?
Я подозреваю, что если мы продолжим просить ядро проверить его список процессов, то пострадают другие потоки, поскольку ключевые структуры данных могут постоянно блокироваться - тогда как если бы мы не вызывали sched_yield
, эти блокировки ядра имели быбыть неоспоримым.Имеет ли это смысл, или должно быть вполне нормально многократно звонить sched_yield
.