Итак, вот моя ситуация:Java: Как остановить поток, который вызывает последовательность функций C++ с использованием функции JNI?
У меня есть приложение Java, которое отправляет массивы данных в C++ DLL с использованием JNI-метода из класса JavaToCpp.
После того, как C++ DLL получила все данные, он начинает выполнять несколько действий над ним.
Я запускаю класс JavaToCpp с использованием нового потока, поскольку мой интерфейс Java не должен быть заморожен во время (длинных) (C++) процедур/подпрограмм.
Я реализовал два способа, чтобы остановить работу (C++) процедуры/Подпрограммы:
- Первый «STOP»: создает файл, который будет прочитан C++ DLL, так что можно чисто прекратить выполнение процедур/подпрограмм.
- Второй «УБИТЬ»: предполагается выключение/убить бегущего C++ процедуры/подпрограммы непосредственно
Проблема заключается в том, что, посмотрев на некоторое время, я не нашел ничего хорошего трюк perfom его ,
Так что, если кто-нибудь получил представление о том, как убить тему во время процедуры/подпрограммы быть запущен ...
Да, извините, я имел в виду «процедуры/подпрограммы». Использование «Процессов» для вызова моей C++ DLL будет работать одинаково? (Я предполагаю, что он будет использовать больше памяти, и мои ресурсы не будут использоваться совместно с Dll (например, я должен вызывать Java-методы из моей C++ DLL для добавления результатов в Java GUI)) – Jsncrdnl
@ Kuroicloud666: JNI только карты вызовы в рамках одного и того же процесса.Если вы используете отдельный процесс, вы должны использовать некоторые механизмы взаимодействия между процессами, такие как сокеты TCP/IP (может быть, проще) или каналы (возможно, быстрее) или даже временные файлы (в некоторых случаях это может быть вполне нормально). Поэтому переключаться между ними не так просто, это принципиальное дизайнерское решение. –
okok, спасибо за ответ. – Jsncrdnl