1

pthread_exitこのサンプルコードを使用して使用法を理解しようとしています:

void* PrintVar(void* arg)
 { 
   int * a = (int *) arg; // we can access memory of a!!!
    printf( "%d\n", *a); 
 } 

int main(int argc, char*argv[]) 
 { 
   int a, rc;
    a = 10; 
   pthread_t thr; 
   pthread_create( &thr, NULL, PrintVar, &a ); 

  //why do I need it here?//
  pthread_exit(&rc); /* process continues until last  
                                threads termintates */

よくわからないことが2つあります。

  1. pthread_create を使用している場合 - 「a」パラメーターのアドレスを渡していますが、このパラメーターは PrintVar 関数の「arg」の下に「保存」されていますか? たとえば、 : を使用してPrintVar(void *blabla)いて、メイン関数から 2 つのパラメーターを渡したい場合: int a = 10, int b= 20.. どうすればそれを行うことができますか?

  2. pthread_exit が必要な理由 これは、プロセスが終了するのを待つことを意味しますが、その行を使用しない場合、どのようなシナリオが考えられますか?

どうもありがとう!

4

2 に答える 2