Я использовал SWIG для создания интерфейса из C ++ в Java или Python, а затем использовал типичную поддержку веб-интерфейса для этих языков.
Поскольку в Java и Python есть отражение, существующим для них инфраструктурам веб-служб гораздо легче передавать данные.
В отношении потоков, если ваш код C ++ является потокобезопасным, вы можете позволить серверу Java управлять созданием потоков для одновременных запросов и т. Д. И просто вызывать код C ++ с помощью JNI.
В качестве бонуса вы можете протестировать свой код C ++ из Python, используя те же интерфейсы SWIG.