2015-10-05 44 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); 
    ...