C 知識點(1) thread庫

2021-10-02 23:14:33 字數 1292 閱讀 1774

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...