抱歉,如果问题标题令人困惑。我只是想把所有的东西放在一起。我有一段代码,如:
int newThread(int(*pfunc)())
{
pthread_t tid;
pthread_create(&tid, NULL, pfunc, NULL);
int i = 0;
while(threads[i] != 0 && i < MAX_NUM_THREADS)
{
if ((MAX_NUM_THREADS - 1) == i)
{
puts("We've run out of threads' number limit\n");
return 1;
}
++i;
}
threads[i] = tid;
pthread_join(tid, NULL);
return 0;
}
threads[] 是一个全局数组。我想让这个函数可重入,但这意味着据我所知,我不应该使用全局变量。我想这是因为全局变量的值在某个时间是不可预测的。但在我的情况下,数组似乎是可以预测的。
- 可以吗,如果我用互斥锁锁定数组以使该函数可重入?
- 如果是,那么我该怎么做呢?只需在使用前锁定第一个元素并在使用后解锁?还是在访问时锁定/解锁每个元素更好?
- 这甚至可以使这个函数可重入吗?