2014-12-15 6 views
1

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

+1

Почему вы верите, что потоки все работают на одном ядре? Операционная система автоматически выделяет потоки в зависимости от того, какие ядра процессора доступны для их запуска. Если ваши другие ядра не заняты запуском * других * CPU-интенсивных программ, ваши потоки должны автоматически запускаться одновременно на нескольких ядрах без каких-либо особых усилий с вашей стороны. – Wyzard

+1

Кроме того, вы упомянули о сбое в качестве проблемы, которую вы хотите решить, работая на нескольких ядрах. Если программа вылетает в зависимости от того, сколько ядер она использует, это ошибка в самой программе. Предоставление ему большего количества ядер не является решением и не гарантирует, что оно не потерпит крах (даже если это будет происходить реже). Сама программа должна быть исправлена. – Wyzard

+0

оба компонента работали хорошо по отдельности, и позже они были интегрированы для запуска одновременно, и это тот момент, когда они работают в определенной степени, а затем сбой. Считаете ли вы, что выполнение двух процессов параллельно будет, возможно, с помощью MPI? –

ответ

1

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

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

Смежные вопросы