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