0
我想讓我的主程序啓動一個線程,管理我的程序的一部分...獲取的線程創建一個數組的每個元素的子線程。子線程將數組元素設置爲不可用,延遲10秒,然後將元素設置爲可用。然而,主線程繼續正常執行,直到數組元素可用。睡眠命令不工作在子線程
但是,它似乎不適用延遲...
請注意數組是一個全球性的陣列。
我在做什麼錯?
下面的代碼將概述我想要更好,然後解釋...
DWORD WINAPI SubThread(void* lpParam)
{
int i = (int)lpParam;
printf("Sub Thread Ran");
structureArray[i].available= false;
Sleep(10000);
structureArray[i].available = true;
return 0;
}
DWORD WINAPI MainThread(void * lpParam)
{
while(true)
{
for(int i = 0; i < structureArray.size(); i++)
{
if(structureArray[i].available)
{
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)SubThread, (LPVOID)i, 0, NULL);
}
}
}
}
也許你的子線程沒有運行,因爲主線程已經終止。如果你想要預期的結果,你應該在訪問全局數組時使用互斥鎖。 – jfly