2015-10-05 3 views
0

У меня был вопрос в C? Возможно ли создать поток и вызвать функцию потока позже, когда это требуется? Вероятно, используя процедуру thread_start всякий раз, когда это необходимо. В противном случае, если я использую pthread_create, поток будет создан несколько раз и должен быть обработан тщательно. Пожалуйста, помогите мне. Заранее спасибо.Вызов функции потока позже

+1

Пожалуйста, объясните ваши требования немного более яснее. В противном случае единственным ответом, который любой может дать этому, является «да, скорее всего, это возможно» –

+3

Конечно, просто закодируйте поток, чтобы ждать работы и выполнять работу, когда сообщается. –

+0

Следуя за комментарием @DavidSchwartz, вы можете использовать переменную условия и передавать ее, или вы можете ждать ввода-вывода. Вы можете сделать это в верхней части цикла, чтобы он обрабатывал данные или кусок работы каждый раз, когда сигнализируется переменная состояния или завершается ввод-вывод. – clearlight

ответ

2

Вы можете использовать семафоры, просто блокировать функцию нити в то время как петля:

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

..и всякий раз, когда вам нужен поток, просто сигнализировать его:

sem_post(my_semaphore); 
    ... 
    other_code; 
    sem_post(my_semaphore); 
    ... 
Смежные вопросы