私の質問はこれです。私はこのコードを持っています:
#include<stdio.h>
#include<semaphore.h>
#include<pthread.h>
int number;
pthread_mutex_t mutex[number];
pthread_t threads[number];
void *dosomething(void *num)
{
int *i=num;
pthread_mutex_lock(&mutex[i]);
//dosomething
pthread_mutex_unlock(&mutex[i]);
}
int main(int argc, char *argv[]) //<-- main
{
printf("How many threads do you want?");
scanf("%d",&number);
int rc,t;
for(t=1;t<number;t++){
pthread_mutex_init(&mutex[t],NULL);
printf("In main: creating thread %d \n", t);
rc = pthread_create(&threads[t], NULL, philospher,(void *)t);
}
if (rc){
printf("ERROR; return code from pthread_create() is %d\n",rc);
exit(0);
}
pthread_exit(NULL);
}
コンパイルしようとすると、ファイルスコープで可変的に変更された「ミューテックス」/ファイルスコープで可変的に変更された「スレッド」と表示されます。ユーザーが定義した多数のミューテックスとスレッドを作成し、作成されたすべてのスレッドから利用できるようにしたいだけです。