我想做一個程序,您可以在其中選擇要執行的線程數,並且遇到問題可以使其運行。我試着先創建線程,然後根據選定的編號加入所有線程,但是當我嘗試加入它們時,程序未檢測到線程。是否可以選擇從程序內部運行的線程數量? C++
//####################### CREATE THREADS ###################
if (numProcs >= 1)
{
thread t1(threadTask,repart[0],llargMax,contrassenya);
}
if (numProcs >= 2)
{
thread t2(threadTask,repart[1],llargMax,contrassenya);
}
if (numProcs >= 3)
{
thread t3(threadTask,repart[2],llargMax,contrassenya);
}
if (numProcs >= 4)
{
thread t4(threadTask,repart[4],llargMax,contrassenya);
}
//################## JOIN THREADS ################################
if (numProcs >= 1)
{
t1.join();
}
if (numProcs >= 2)
{
t2.join();
}
if (numProcs >= 3)
{
t3.join();
}
if (numProcs >= 4)
{
t4.join();
}
我也嘗試過在創建它之後立即加入每個線程,但是這會停止我的程序並且一次僅加入一個線程。
if (numProcs >= 1)
{
thread t1(threadTask,repart[0],llargMax,contrassenya);
t1.join();
}
if (numProcs >= 2)
{
thread t2(threadTask,repart[1],llargMax,contrassenya);
t2.join();
}
if (numProcs >= 3)
{
thread t3(threadTask,repart[2],llargMax,contrassenya);
t3.join();
}
if (numProcs >= 4)
{
thread t4(threadTask,repart[4],llargMax,contrassenya);
t4.join();
}
最後我試着取下線程,這個工作如果在我的主程序結束時,我等待的時間像樣的數目,所以每一個線程可以在quiting程序之前完成,但我不知道如何檢測所有分離線程何時結束,因此我的程序可以處理更大的線程。
if (numProcs >= 1)
{
thread t1(threadTask,repart[0],llargMax,contrassenya);
t1.detach()
}
if (numProcs >= 2)
{
thread t2(threadTask,repart[1],llargMax,contrassenya);
t2.detach();
}
if (numProcs >= 3)
{
thread t3(threadTask,repart[2],llargMax,contrassenya);
t3.detach();
}
if (numProcs >= 4)
{
thread t4(threadTask,repart[4],llargMax,contrassenya);
t4.detach();
}
sleep(100)
我試過所有這些方法,但現在我卡住了,我不知道我可以試試。任何關於如何做到這一點的想法都會對我有所幫助。
使用*容器*。這個問題與「是否可以選擇在運行時讀取的員工數量」沒有區別。或學生。或動物。 –
也使用*循環*。你需要從0循環到'numProc-1'並且做你想做的一切。 – Sergey
在第一個代碼示例中,您聲明本地作用域中的線程。它甚至如何編譯? – Sergei