0
我的問題是這樣的,我有這段代碼:互斥
#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);
}
當我嘗試編譯它,它說: 可變修改的文件範圍「互斥」/ 各種變型文件範圍內的'線程'。 我希望它能夠創建大量用戶定義的互斥鎖和線程,並可從創建的所有線程中使用。
感謝您reply.I也放在線程一個printf說「你好進出口數量%d線」,但似乎有時當我的線程中創建例如5個線程中的printf有時打印少比5還是有時沒有hellos。 – Izanagi