一般正常使用 pthread_create 的執行緒,在執行結束時會保留返回值等待 pthread_join 呼叫傳回,也就是說執行緒所使用的資源會等到 pthread_join 才會被釋放。

#include <pthread.h> #include <stdio.h> #include <unistd.h> void* thread_func(void *param) { int i=0; int *running = (int*)param; printf("[%s:%d,%s]thread start\n", __FILE__, __LINE__, __func__); while(*running) { printf("[%s:%d,%s]%d\n", __FILE__, __LINE__, __func__, i++); sleep(1); } printf("[%s:%d,%s]thread stop\n", __FILE__, __LINE__, __func__); return (void*)123; } int main(int argc, char **argv) { void *return_value; int running; pthread_t thrid; running = 1; pthread_create(&thrid, NULL, thread_func, (void*)&running); sleep(5); running = 0; pthread_join(thrid, &return_value); printf("[%s:%d,%s]%d\n", __FILE__, __LINE__, __func__, (int)return_value); return 0; } # ./a.out [test.cpp:9,thread_func]thread start [test.cpp:11,thread_func]0 [test.cpp:11,thread_func]1 [test.cpp:11,thread_func]2 [test.cpp:11,thread_func]3 [test.cpp:11,thread_func]4 [test.cpp:14,thread_func]thread stop [test.cpp:28,main]123

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()