通过pthread_create传递数组元素(struct)

时间:2017-11-27 13:42:09

标签: c arrays struct pthreads

我有一些问题,通过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

你能帮帮我吗?

0 个答案:

没有答案