1
对不起,如果问题标题混淆。我只是想把所有的东西放在一起。 我有一段代码,如:将全局数组锁定在多线程程序中的重入期望函数中?
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 []是一个全局数组。我想让这个函数是可重入的,但这意味着我不应该使用全局变量,据我所知。我想这是因为全局变量的值在某个特定时间是不可预测的。但在我看来,阵列似乎是相当可预测的。
- 没问题,如果我使用互斥锁锁定数组以使此功能可重入?
- 如果是,那我该怎么做对不对?在使用它之前锁定第一个元素,然后解锁?或者在访问时锁定/解锁每个元素会更好吗?
- 这甚至有可能使此功能重入?
@Julien感谢您的编辑和回答。这是我的想法,但我不确定,因为我找不到任何信息。我忘了在返回+1时释放锁定! 我需要一天的时间来获得更多评论,如果有的话 – rightaway717
请记住,您必须在其他地方执行相同的锁定,并且还有代码触及'threads'。 – nos