Linux下CMake編譯鏈接線程庫以及線程綁定方式
CMake編譯鏈接線程庫
1. 設置鏈接選項
使用 CMake 編譯程序時,需要設置鏈接選項來鏈接 pthread 庫。
在 CMakeLists.txt 文件中添加鏈接選項,即在add_executable()下面添加以下代碼將 pthread 鏈接庫添加到目標可執(zhí)行文件中:
target_link_libraries(target_name pthread)
target_name為目標可執(zhí)行文件的名稱。
2. 進行編譯
使用make命令進行編譯即可。
線程綁定
程序中使用多線程時,通常會將線程指定到某個CPU上運行,這樣可以減少競爭,提高程序應用性能。但是linux下和windows的寫法不太一樣,下面就總結一下在linux下的線程綁定方法。
主要使用pthread_setaffinity_np()函數(shù)將線程綁定到指定的CPU,該函數(shù)需要傳入線程ID和一個CPU集合參數(shù),其中CPU集合參數(shù)表示要使用的CPU編號。
具體步驟如下:
1. 添加頭文件
#include <pthread.h>
2. 定義線程執(zhí)行函數(shù)
void *thread_func(void *arg)
{
// 線程執(zhí)行的任務
// ...
}
3. 創(chuàng)建線程
pthread_t thread_id; pthread_create(&thread_id, NULL, &thread_func, NULL);
4. 設置CPU集合
cpu_set_t cpuset; CPU_ZERO(&cpuset); CPU_SET(cpu_id, &cpuset);
5. 線程綁定到指定CPU
pthread_setaffinity_np(thread_id, sizeof(cpuset), &cpuset);
6. 等待子線程執(zhí)行完畢
pthread_join(thread_id, NULL);
注:上述中cpu_id為綁定的CPU編號,即 0,1,2...
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Linux系統(tǒng)中CPU占用率較高問題排查思路與解決方法
這篇文章主要給大家介紹了關于Linux系統(tǒng)中CPU占用率較高問題排查思路與解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Linux具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-07-07

