Запуск процессов на разных ядрах

1

У меня есть несколько классов java (blackbox), которые я вызываю через jni из собственного C-кода. В моем родном коде есть 4 параллельных потока, которые должны выполняться всегда, и иногда они вызывают некоторые классы Java, но эти классы работают очень медленно. Я придерживаюсь мнения, что потоки работают на одном ядре, и использование нескольких ядер может решить мою проблему (сбой). Я хотел бы запустить среду java в фоновом режиме, 4 собственных потока кода на одном ядре, а java lasses, если вызов должен запускаться на отдельном ядре, независимо от операций собственного кода. Скажите, пожалуйста, если я на правильном пути и дайте мне знать, как я могу продолжить. Спасибо заранее.

  • 1
    Почему вы считаете, что все потоки работают на одном ядре? Операционная система автоматически распределяет потоки между любыми ядрами процессора для их запуска. Если все остальные ваши ядра не заняты выполнением других ресурсоемких программ, ваши потоки должны автоматически работать одновременно на нескольких ядрах без каких-либо особых усилий с вашей стороны.
  • 1
    Кроме того, вы упомянули сбой как проблему, которую вы надеетесь решить, работая на нескольких ядрах. Если программа дает сбой в зависимости от того, сколько ядер она использует, это ошибка в самой программе. Предоставление большего количества ядер не является решением и не гарантирует, что оно не будет зависать (даже если это будет происходить реже). Сама программа должна быть исправлена.
Показать ещё 2 комментария
Теги:
multiprocessing
jni
multicore

1 ответ

1

Вы не можете явно назначить, какое ядро выполнить ваш поток, но вы можете назначить приоритеты и аффинности для потоков.

Возможный дубликат этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню