我有一些问题,通过pthread_create将数组元素作为参数传递。
我有这个结构:
struct threadInfo {
int threadNumber;
int sleepTime;
};
我初始化数组(在函数中),如下所示:
struct threadInfo info[1];
然后在while循环中我这样做:
int i = 0;
...
while (i < 2) {
pthread_mutex_lock(&countMutex);
if (threadsCount < MAX_THREAD) {
info[i].threadNumber = ++threadsCount;
pthread_mutex_unlock(&countMutex);
info[i].sleepTime = rand() % (10 + 1 - 1) + 1;
pthread_create(&threads[i], NULL, lawine, &info[i]);
i++;
}
else {
pthread_mutex_unlock(&countMutex);
break;
}
}
threadsCount是一个全局var。
在第一回合它运作正常(info [0])。但在第二轮(信息1)中,值是错误的。 the output
你能帮帮我吗?