c++11之後有了標準的執行緒庫,std::thread,通過建立乙個thread物件來管理c++程式中的多執行緒。
通常會看到pthread,這是linux下c++執行緒庫,提供一些執行緒的操作,偏向底層。對於多執行緒必須明白執行緒安全、執行緒同步和互斥關係、執行緒如何通訊、與程序間的關係等,否則會陷入以下迷茫:
(1)程式死鎖,不響應
(2)執行結果達不到預期
(3)多執行緒效能並無提公升執行效率
(4)理不清程式執行流程
(5)不知道如何除錯,同上
今天的案例是在進行lego-loam中地圖優化**閱讀時,對於多執行緒的程式執行問題的疑問,通過模仿地圖優化執行寫了以下demo,希望能夠幫助自己理解多執行緒的程式執行問題。
#include
#include
#include
using
namespace std;
class
ctest
inttstart
(const string& tname)
inttend
(const string& tname)
int run (
int j)};
intmain()
//join執行緒,呼叫該函式會阻塞當前執行緒,知道*this所標識的執行緒執行完畢,join才返回
t1.join()
; t2.
join()
; cout<<
"main function!"
}
程式執行結果:
000
run0
run1
run2
run3
run4
thread t1!
111thread t2!
222main function!
cmakelists.txt
cmake_minimum_required
(version 2.8
)project
(test1)
set(cmake_build_type "-release"
)add_compile_options
(-std=c++
11-g -wall)
add_executable
(test1 test1.cpp)
target_link_libraries
(test1 pthread)
執行緒(Thread)知識點概要
執行緒的一些主要方法 1.thread.run 執行 執行緒任務 2.thread.start 開啟執行緒 3.thread.stop 強制結束執行緒 執行緒消亡 4.thread.sleep time 凍結執行緒,執行緒依舊存活,時間到就解凍,接著執行執行緒 5.thread.wait 徹底凍結,...
C 面試知識點1
c 指標和引用的區別 相同點 1 都是對位址的概念 指標指向一塊記憶體,而引用是某塊記憶體的別名。不同點 1 指標本身就是乙個物件,允許對指標賦值和拷貝。引用僅是個別名 2 指標不需要在定義的時候賦初值,即可以為空,而且指標生命週期內可以先後指向幾個不同的物件。但是引用必須要初始化 不但不能為空而且...
c語言知識點 1
1.參與運算的資料是什麼型別,結果也是什麼型別,並且參與運算資料必須是同一型別,會進行自動型別轉換 double d 10 3 3.00000,還有自動型別提公升 2.int size sizeof char 僅這種情況括號不能去掉 3.c語言中,條件成立為真,不成立為假,任何數值都有真假性,只有0...