linux c 多线程开发

在开发多线程程序时,当创建的线程数量特别多的时候,就会遇到线程数量的瓶颈。

多线程设置

设置内核参数 kernel.threads-max

kernel.threads-max 是 linux 系统允许创建的最大线程数,默认是 7767

修改 /etc/sysctl.conf 配置文件中的 kernel.threads-max 为合适的线程数。如果配置文件中没有这个参数,则添加。

设置 pthread_attr_t

    pthread_attr_t threadAttr;
    pthread_attr_init(&threadAttr);
    //size_t vms = 0;
    //pthread_attr_getstacksize(&threadAttr,&vms);
    pthread_attr_setstacksize(&threadAttr,1048576);

    pthread_t tid=0;
    pthread_create(&tid,&threadAttr,client_task,&param);

通过 pthread_attr_getstacksize() 函数可以获得创建线程时申请的虚拟内存大小,一般是 8388608 (8M)。使用 pthread_create 没创建一个线程,就会申请 8M 的虚拟内存。

可以使用 pthread_attr_setstacksize() 函数来设置创建线程时的要申请的虚拟内存大小。

猜你喜欢

转载自www.cnblogs.com/cnwcl/p/9814854.html