2015-10-05 69 views
0

我在C中有個問題嗎? 是否有可能在需要時創建線程並調用線程函數? 可能在需要時使用thread_start例程。 否則,如果我使用pthread_create,該線程將被多次創建並且必須謹慎處理。 請幫幫我。提前致謝。稍後調用線程函數

+1

請說明您的要求有點更清晰。否則,任何人只能回答這個問題的答案是「是的,很有可能」 –

+3

當然,只需編寫線程等待工作,並在收到通知後進行工作。 –

+0

跟隨@DavidSchwartz評論,您可以使用條件變量並廣播它,或者您可以等待I/O。您可以在循環的頂部執行此操作,以便在每次發送條件變量或I/O完成時處理數據或一大塊工作。 – clearlight

回答

2

您可以使用信號燈,只是阻止線程函數中while循環:

while(1){ 
     sem_wait(my_semaphore); 
     code_that_needs_to_be_done_in_thread; 
    } 

..和當你需要你的線程,只是簡單的表示它:

sem_post(my_semaphore); 
    ... 
    other_code; 
    sem_post(my_semaphore); 
    ...