«Не удается обработать процессоры с горячей заменой» - вопрос реализации - PullRequest
0 голосов
/ 20 мая 2019

Я использую библиотеку gRPC и у меня много журналов "Не удается обработать горячие подключенные процессоры".Я запутался, потому что условие (https://github.com/grpc/grpc/blob/master/src/core/lib/gpr/cpu_linux.cc#L74) для этого журнала сравнивает фактический процессор, на котором работает вызывающий поток, с числом процессоров, настроенных операционной системой. Почему они это делают? Это правильный способ обнаруженияпроцессор с «горячей» заменой?

if (static_cast<unsigned>(cpu) >= gpr_cpu_num_cores()) {
    gpr_log(GPR_ERROR, "Cannot handle hot-plugged CPUs");
    return 0;
  }

1 Ответ

1 голос
/ 20 мая 2019

Почему они это делают?

- это сложный вопрос, на который нужно правильно ответить.Теперь

Является ли это правильным способом определения процессора с «горячей» заменой?

легко - это не так, но цель функции не в этом.Весь код написан с допущением, что количество процессоров не изменяется во время выполнения, этот упрощенный тест просто сообщает вам, что это предположение нарушается.(и сбрасывает число, возвращаемое в ноль, возможно, чтобы не выскочить из некоторого массива, индексированного по номеру ЦП?)

Я ожидаю, что ваш следующий вопрос, вероятно, будет

Почему онипредположить постоянное количество процессоров?

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

...