メッセージを出力するための pthread を作成する例を作成しました。しかし、出力は予想外です。
コード:
System.out.println("Before call native thread");
// invoke the native method to print a message
int socketId = new SocketJNI().createSocket(); //line 7
Thread.sleep(2000);
System.out.println("After call native thread");//line 9: create break point here
C コード:
JNIEXPORT jint JNICALL
Java_SocketJNI_createSocket(JNIEnv * env, jobject obj)
{
pthread_t thread;
pthread_create(&thread, NULL, createSocket, NULL);
return 0;
}
void* createSocket(void *arg)
{
printf("Inside native thread(pthread)");
pthread_exit(NULL);
}
出力:
Before call native thread
After call native thread
Inside native thread(pthread)
しかし、私はそれがあるべきだと思います:
Before call native thread
Inside native thread(pthread)
After call native thread
それで、問題は何ですか?pthread はどのように機能しますか?
アップデート:
8 行目 (デバッグ時) に到達すると、pthread (7 行目で作成) はメッセージを出力しません。
Before call native thread
私は待って、待っても印刷しない 9行目以降:
Before call native thread
After call native thread