yield между различными процессами

У меня есть два кода C ++, один называется a , а другой - b . Я работаю в 64-битном Linux, используя библиотеку потоковой передачи Boost.

Код a создает 5 потоков, которые остаются в бесконечном цикле, выполняя некоторую операцию. Код b создает 5 потоков, которые остаются в незавершенном цикле. завершающий цикл с вызовом yield ().

Я использую четырехъядерный компьютер ... Когда вызывается только код a , он загружает почти 400% ЦП.Когда a вызывает только код b , он получает почти 400% загрузки ЦП. Я уже этого ожидал.

Но при одновременном запуске обоих, я ожидал, что код b почти не использует CPU, а a использует 400%. Но на самом деле оба используют равную долю процессора, почти 200%.

У меня вопрос, не работает ли yield () между разными процессами? Есть ли способ заставить его работать так, как я ожидал?

5
задан André Puel 22 September 2011 в 22:48
поделиться