1. 程式人生 > >linux c 多執行緒開發

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() 函式來設定建立執行緒時的要申請的虛擬記憶體大小。