idealvin / coost

A tiny boost library in C++11.
Other
3.91k stars 558 forks source link

协程中不能用jvm->AttachCurrentThread吗 #317

Open kamylee opened 1 year ago

kamylee commented 1 year ago

我在ndk中的Native函数中成功的调用jvm->AttachCurrentThread(主线程)。可以正常的调用java的clashh方法。 也能在std::thread线程中成功获取: std::thread nativeThread([B]() { // 将子线程附加到Java虚拟机上 JavaVM* pJvm = JniHelper::getJavaVM(); JNIEnv *envSub = nullptr; pJvm->AttachCurrentThread(&envSub, nullptr); 但是在http::Server().on_req(cb).start()中的cb函数中却无法获取,是协程不支持吗,无法获取线程ID造成的吗?

idealvin commented 1 year ago

http::Server 内部可能有多个线程,cb 可能被多个线程调用

kamylee commented 1 year ago

那有没有解决方法啊?我实际上是把一个Http连接升级成了websocket。然后一直保持着连接(循环收发信息)。按理此时就只是一个线程来处理这个CB吧?有什么办法支持jvm->AttachCurrentThread吗?