2020/11/6

pthread return value

pthread 可以 return value 給 parent process (who create it)
這個 方法:
#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 (為什麼要放?)

沒有留言:

張貼留言