При попытке написать программу, интерсивно создающаю нити pthread, наткнулся на проблему с утечкой памяти.
Вот тестовая программка:
=== Cut ===
#include <stdio.h>
#include <pthread.h>
void *thread1(void *arg)
{
return NULL;
}
int main(void)
{
pthread_t thread[10];
int i;
for (i=1; i<=10; i++)
{
r = pthread_create(&(thread[i]), NULL, &thread1, NULL);
printf("i = %d\n", i);
sleep(1);
}
printf("sleeping ...\n");
sleep(20);
return 0;
}
=== Cut ===
Если при ее исполнении смотреть вывод команды ps в shell, то видно, что параметр VSZ с созданием каждой новой нити увеличивается на несколько килобайт. И, несмотря на то, что цепочки завершаются сразу после запуска, параметр VSZ при их завершении не уменьшается.
Опытным путем, также, было установлено, что если создавать цепочки бесконечно, то при достижении VSZ значения 2090772, функция pthread_create начинает возвращать код ошибки 11 (EAGAIN -- not enough system resources to create a process for the new thread).