用 這個 方法:
#include <pthread.> #include <stdio.h> void *myThread() { printf("in thread now\n"); return (void *) 42; } int main() { pthread_t tid; int status; pthread_create(&tid, NULL, myThread, NULL); pthread_join(tid, (void*)&status); printf("%d\n",status); return 0; }.. 這個 status 的宣告...
要測試 一下..
等等... 感覺怪怪的...
因為 return 一個 cast 成 (void*) 的 scalar value
...
要是看這一篇的話,thread要為return value alloc一塊記憶體,不能隨thread 退出兒消失。
經由把指標return 給 creator 後,creator 負責 free 掉。
有關 return 跟 exit() :
這一篇說明看起來好可怕...
對C++來說,return 會 call 所有 local scope 物件的 destructor,一一release 完再結束,而exit( )不會這樣做,它直接結束。
-- 可以寫sample code 試試,看看 1.不寫 2.return 3.exit( ) 對於 local 物件有蛇麼差別。
實際上用 g++ -S main.cpp 產生 assembly file 來看有 return 跟沒 return 的差別。
只插在 有return 的,多一個 intruction 把 return value 放到 eax,沒return 的,就放一個 nop (為什麼要放?)
沒有留言:
張貼留言