我有一個pthread指針,我需要爲指針分配足夠的空間來保存足夠數量的pthread。然後初始化它們和pthread_create()以將線程傳遞給一些函數。如何動態分配(初始化)一個pthread數組?
問題是,如果我只是使用malloc來爲指針分配空間,那麼只是使用pointer [index]的pthread_create,那麼線程將不會被正確創建。我該如何解決這個問題?我相信pthread_t是一些結構類型,所以我相信我需要在執行pthread之前初始化它們。我怎麼做?謝謝。
我只是他們工作正常了一定量的並行線程的測試:
pthread_t t1, t2, t3 ...... tn;
然後
pthread_create(&t1, NULL, function, (void *)argument)
但是,如果使用指針和malloc的,他們不會work.Thread不會被創建。
pthread_t *ptr;
ptr = malloc(sizeof(pthread_t)*num);
然後
pthread_create(&ptr[index], NULL, function, (void *)argument)
將無法正常工作。在這種情況下,我如何初始化ptr [index]?
'pthread_t'是一些未指定的類型。在我的Debian/Linux系統上,它是一個'long' ...而'malloc'可能會失敗。你測試過了嗎?最後,你應該清除'ptr'數組......但是'pthread_create'可能會失敗,你應該測試它。 – 2014-11-05 09:49:47
你的malloc解決方案似乎是正確的。問題可能在其他地方。 – interjay 2014-11-05 09:51:02
請修改您的問題以使用真實代碼進行改進。 – 2014-11-05 09:52:36