2

while(1) で連続して呼び出すスレッドが必要ですが、pthread_create() でスレッド関数を呼び出すと、新しいスレッドが作成されます。
次の点について助けが必要です:~
1)スレッドを作成せずにスレッド関数を呼び出す方法はありますか?
2) 前のスレッドを破棄する方法はありますか。

サンプルコードは

void main()
{
pthread_t thread1;
 while(1)
 {
        pthread_create( &thread1, NULL, myFun,  (void*) NULL);
 }
}
void * myFun(void *ptr)
{
printf("Hello");
}


* 380 以上のスレッドを作成することはできません。ここでは、単一のスレッドのみを使用する必要があります。

4

4 に答える 4

0

おすすめのデザインは。

void * myFun(void *ptr);

volatile int thread_exit = 1; 

void main()
{
        pthread_t thread1;

        pthread_create( &thread1, NULL, myFun,  (void*) NULL);       

        while(1)
        {
             //Ask every 10 sec for killing thread like
             sleep(10);
             printf("Do you wish to kill [0/1]???");
             scanf("%d", &thread_exit); 
        } 


        //Add code here to make main() to wait till thread dies. 
        //pthread_join(&thread1);
}

void * myFun(void *ptr)
{
  while(thread_exit)
  {
     printf("Hello");
  }
}
于 2013-10-17T05:56:23.297 に答える