2013-11-24 34 views
0

在我的多線程項目中,我有幾個線程同時運行,我能找到的唯一等待函數是pthread_join,但它不調用特定線程,而是阻塞當前正在運行的線程,直到線程我作爲參數傳遞給pthread_join已結束。我正在尋找一種方法來調用一個特定的。調用C中的特定線程

typedef struct proc{ 
    int sys_number; //unique node ID i give the thread 
    pthread_t process; 
} thread; 

thread proccesses[N]; 

thread = pthread_create(&(proccesses[i].process), NULL, printme, &(proccesses[i].sys_number)); 

然後當我想打電話讓說proccesses [I] .process我使用:

pthread_join(proccesses[0].process, &status); 

而是它運行打開了,等待的所有進程,我期待的等效waitpid在進程中。

編輯:我正在尋找一種方法來選擇哪個線程將運行下一個

+1

請更改您的問題。這很混亂。等待線程將停止當前線程。當所有或特定線程結束而不停止主線程時,是否要求發出信號? – Matt

+0

你好,是的,當我使用pthread_join當前線程將停止,直到線程作爲參數傳遞給函數結束。我正在尋找一種方法來選擇下一個將運行的線程 –

+1

沒有用於暫停/繼續線程的內建函數。如果你想以任何方式同步線程,你需要實現這個你自己的,可能使用一個或多個條件和/或互斥體。 – alk

回答

2

我相信你可以實現一個簡單的pause()/resume()控制器通過互斥體和條件變量每個線程。

+0

這是一個好主意。謝謝 –