Я написал небольшую программу, чтобы увидеть количество накладных расходов, необходимых для создания потока.
Вот программа (я написал ее быстро, поэтому она не самая лучшая):
#include <iostream>
#include <pthread.h>
void * lala(void * cake) {
int * hi = (int *)cake;
std::cout << *hi << '\n';
}
int main(void) {
pthread_t thread;
for (int i = 0;i < 10000;i = i + 1) {
pthread_create(&thread,0,lala,&i);
}
}
Он в основном запускает 10000 потоков и передает им их номер потока, и каждый поток выводит свой номер.
Выходные данные меняются каждый раз, когда я запускаю программу, однако я заметил, что была одна часть, которая никогда не менялась:
В конце вывода я всегда нахожу это:
...
9994
9995
9996
9997
9998
9999
0
Что означает, что первый поток завершает последний ...
Итак, друзья мои, есть ли у кого-нибудь возможное объяснение этому явлению?