Эй, ребята, у меня есть вопрос о каком-то коде, который я тестирую, чтобы начать понимать потоки posix.
У меня есть такой базовый код:
#include <iostream>
#include <string>
#include <sstream>
#include <pthread.h>
using namespace std;
void *printInfo(void *thid){
long tid;
tid =(long)thid;
printf("Hello from thread %ld.\n",tid);
pthread_exit(NULL);
}
int main (int argc, char const *argv[])
{
int num =8;
pthread_t threadlist[num];
int rc;
long t;
for(t=0;t<num;t++){
printf("Starting thread %ld\n",t);
rc = pthread_create(&threadlist[t],NULL,printInfo,(void *)t);
if(rc)
{
printf("Error creating thread");
exit(-1);
}
}
pthread_exit(NULL);
return 0;
}
Очень простой код, запускать потокии выведите из них все эти чудеса, за исключением того, что я не понимаю последний pthread_exit (NULL) перед возвращением 0;в конце основного метода.
Кажется, что основной поток не должен быть pthread, и не должен этого делать!Если я этого не сделаю, код не будет работать (то есть код компилируется и выполняется, но я получаю только печатные сообщения "start thread", а не сообщения "hello from ..".
В общем, я хочу знать, зачем это нужно.
Кроме того, код компилируется и выполняется правильно, если я закомментирую include