スレッドを同期化しようとすると問題が発生しました。Cでスレッドを同期できません
static void* CarProcess(void *str);
int main()
{
thread_t *pthreadsArray;
pthreadsArray = (thread_t*)malloc(sizeof(thread_t) * 10);
for (int i = 0; i < 10; i++)
{
int pthread = mythread_create(&pthreadsArray[i], NULL, CarProcess, i);
}
for (int i = 0; i < 10; i++)
{
mythread_join(pthreadsArray[i], NULL);
}
}
static void* CarProcess(void *str)
{
while(1){
printf("Thread ID: %i\n", str);
}
}
私はプログラムを実行すると、私はこの出力があります:
Thread ID: 0
Thread ID: 0
Thread ID: 0
Thread ID: 0
...
をしかし、 "スレッドID:1" と表示されたことがない、 "スレッドID:2"、「スレッドを私は次のコードを持っていますID:3 "....または"スレッドID:9 "。私はそれがミューテックスを使用して解決することができたと思うミューテックスをロックしてunloking ..どのような体はそれを解決するためのアイデアを持っていますか?ありがとう
、実際のプログラムには動的なスレッド数があると仮定しています。それ以外の場合は 'malloc'を使うだけで済みますし、通常の配列を使うこともできます。 –
また、 'mythread_create'と' mythread_join'とは何ですか? –
@JoachimPileborgありがとうございますが、あなたはスレッドについてたくさん知っているようです...作成と結合はスレッドライブラリの関数です。 –