У меня есть два кода C ++, один из которых называется a , а другой - b .Я работаю в 64-битном Linux, используя библиотеку потоков Boost.
Код a создает 5 потоков, которые остаются в бесконечном цикле, выполняя некоторую операцию.Код b создает 5 потоков, которые остаются в бесконечном цикле, вызывая yield ().
Я на машине с четырьмя ядрами ... Когда вызывается a один только код, он получает почти 400% загрузки процессора.Когда вызывается только код b , он получает почти 400% загрузки ЦП.Я уже ожидал этого.
Но при запуске обоих вместе я ожидал, что код b почти не использует ЦП, а a использует 400%.Но на самом деле оба используют равный срез процессора, почти 200%.
Мой вопрос: не работает yield () между разными процессами?Есть ли способ заставить его работать так, как я ожидал?