在linux操作系统中,同一个程序创建线程的次数是有限制的,不断的创建销毁线程,很浪费资源,同事最后会导致老是创建失败,所以有必要使用线程池。
可以写个简单的代码测试一下:
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
static int value = 0;
void* doSomeThings(void* arg)
{
printf("value=%d\n", value++);
return (void*)NULL;
}
int main()
{
while (1)
{
pthread_t pthreadID;
if ( 0 != pthread_create(&pthreadID, NULL, doSomeThings, NULL))
{
printf("create pthread failed. %m\n");
}
usleep (100*1000);
}
return 0;
}
可以发现,运行一段时间之后,线程创建老是失败,并提示Cannot allocate memory的错误。