Я пытаюсь выяснить, использование pthread_exit
, используя этот пример кода:Зачем использовать pthread_exit?
void* PrintVar(void* arg)
{
int * a = (int *) arg; // we can access memory of a!!!
printf("%d\n", *a);
}
int main(int argc, char*argv[])
{
int a, rc;
a = 10;
pthread_t thr;
pthread_create(&thr, NULL, PrintVar, &a);
//why do I need it here?//
pthread_exit(&rc); /* process continues until last
threads termintates */
есть две вещи, которые я не совсем уверен:
, когда мы используем pthread_create - Я передаю адрес параметра «a», , но является ли этот параметр «сохраненным» в «arg» функции PrintVar? например, если я использовал:
PrintVar(void *blabla)
, и хотел передать 2 параметра из основной функции:int a = 10, int b= 20
.. как я могу это сделать?Зачем нужен pthread_exit? это означает - дождаться завершения процесса - но какой сценарий я могу получить, если я не буду использовать эту строку?
спасибо большое!
Ссылаясь на второй вопрос: Вы пробовали, что произойдет? Подсказки: добавьте 'sleep (1);' в начало 'PrintVar()' и закомментируйте вызов 'pthread_exit()'. – alk
это основные вопросы для многопоточности, а также довольно интеллектуальный вопрос. https://computing.llnl.gov/tutorials/pthreads/, возможно, хорошая книга поможет больше – abasu
@alk Я использовал его без сна, и он работал так же, как и без каких-либо потоков. Вот почему я смущен :(Я попробую, что вы предложили! Спасибо – user1386966