linux c 多執行緒開發
阿新 • • 發佈:2018-11-10
在開發多執行緒程式時,當建立的執行緒數量特別多的時候,就會遇到執行緒數量的瓶頸。
多執行緒設定
設定核心引數 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,¶m);
通過 pthread_attr_getstacksize() 函式可以獲得建立執行緒時申請的虛擬記憶體大小,一般是 8388608 (8M)。使用 pthread_create 沒建立一個執行緒,就會申請 8M 的虛擬記憶體。
可以使用 pthread_attr_setstacksize() 函式來設定建立執行緒時的要申請的虛擬記憶體大小。