2つのスレッドを持つプログラムを作成し、5つの乱数を出力して、最初のスレッドが数値を生成し、2番目のスレッドが数値を生成するように求めます。次に、最初の2番目の番号を生成し、2番目のスレッドはそれを印刷します...などmutexを使用しています。5つの乱数を印刷するためのスレッド同期化
これで、私のコードで1サイクル実行されます。どのようにスレッドをメソッドを5回実行させるためにそれを拡張できますか?
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void* generate (void*);
void* print (void*);
pthread_mutex_t m;
int number = 5;
int genNumber;
int main()
{
int i;
srandom(getpid());
pthread_t th[2];
pthread_mutex_init(&m,NULL);
pthread_create(&th[0],NULL,generate,NULL);
pthread_create(&th[1],NULL,print, NULL);
for (i = 0; i < 2; i++)
pthread_join(th[i], NULL);
pthread_mutex_destroy(&m);
return 0;
}
void* generate(void* arg)
{
pthread_mutex_lock(&m);
genNumber = random() % 9;
printf("Generated #1 \n");
pthread_mutex_unlock(&m);
}
void* print(void* arg)
{
pthread_mutex_lock(&m);
printf("The number is %d " , genNumber);
pthread_mutex_unlock(&m);
pthread_exit(NULL);
}
なぜこのためにマルチスレッドを使用していますか?宿題の要件ですか? –
はい。 mutexとセマフォの練習として –