2016-09-22 3 views
0

スレッド内にスレッドを作成できません。私はthread1を作成する必要があり、thread1は「何か」を行い、何か他のことをするthread2を作成します。Cプログラミングで別のスレッドを作成するスレッドをどのように作成しますか?

私のコード:

#include <pthread.h> 
    #include <stdio.h> 
    #include <errno.h> 
    #include <stdlib.h> 
    #include <unistd.h> 

void *msg1(void *ignored) 
{ 

void *msg2(void *ignored) 
{ 
printf("this is thread2"); 
} 


pthread_t thread; 
int thread2; 
thread2 = pthread_create(&thread, NULL, msg2, NULL); 

return 0; 
} 



int main() 
{ 
pthread_t thread; 
int thread1; 
thread1 = pthread_create(&thread, NULL, msg1, NULL); 
return 1; 


} 

答えて

3

スレッドコールバックの内側からのスレッドを作成するには、メインスレッドからそれらを作成すると違いはありません。もちろん、各スレッドには独自のコールバック関数が必要です。この関数は、pthreadsの指定された書式であるvoid* func (void*)で宣言されています。

理由が不明なため、別の関数の中で関数を宣言しようとします。それは意味をなさないし、Cで許可されていません。スレッドまたはスレッドなし。

2つ目のスレッドのスコープを制限する場合は、両方のスレッドコールバックを独自のモジュールに配置し、2番目のコールバック関数をstaticにします。それは非常に基本的なプログラム設計です - 私はマルチスレッドをとる前にずっと勉強をしておくことをお勧めします。

+2

技術的には、同じ振る舞いを持つ2つのスレッドはもちろん、同じスレッド関数を実行できます。 – unwind

関連する問題