C 多執行緒中呼叫函式的方法

2021-10-19 10:33:49 字數 1637 閱讀 6755

在多執行緒中呼叫函式的方法:

以函式名和函式引數作為輸入物件來構造執行緒物件:t2 t4 t6 t7

通過lambda表示式呼叫函式,將函式作為lambda表示式的內容: t1 t3 t5

#include

#include

#include

void

printall

(int a,

int b,

int c)

void

add(

int a,

int b,

int&c)

void

printstring

(const std::string& info,

const std::string& info2)

void

testthreadinit()

};//通過lambda表示式呼叫函式printall,[=]表示將所需要引數按值拷貝

t.join()

; std::cout <<

"t2: "

; std::thread t2

(printall,a,b,c)

;//通過執行緒物件的構造函式呼叫printall,引數全部按值拷貝

t2.join()

; std::cout <<

"t3: "

; std::thread t3([

=,&c])

;//通過lambda表示式呼叫add,並將c以引用形式呼叫

t3.join()

;printall

(a,b,c)

; std::thread t4

(add,a,b,std::

ref(c));

//通過構造函式呼叫add,通過ref(c)將c以&c的方式呼叫

t4.join()

; std::cout <<

"t4: "

;printall

(a,b,c)

; std::string abc

("abc");

std::string def

("def");

//t6的效率一定會比t5和t7的效率低,因為進行了一次string->const string的拷貝構造

std::thread t5([

&]);

//[&]表示以引用方式呼叫lambda表示式中所有需要的物件

t5.join()

; std::thread t6

(printstring, abc, def)

; t6.

join()

; std::thread t7

(printstring, std::

cref

(abc)

,std::

cref

(def));

//cref(abc)將abc以const& 的形式進行呼叫

t7.join()

;}intmain()

執行結果圖下:

C 多執行緒中呼叫python api函式

收藏今 天看了近一天關於多執行緒的應用中,如何安全呼叫python方面的資料,開始的時候看的簡直頭大如斗,被python語言的全域性鎖 global interpreter lock 執行緒狀態 thread state 等都有點繞暈了,後來經過各方面文章和幫助文件的相互參考,發現對於2.4 2.5...

c 多執行緒 呼叫帶引數函式

執行緒操作主要用到thread類,他是定義在system.threading.dll下。使用時需要新增這乙個引用。該類提供給我們四個過載的建構函式 以下引自msdn thread threadstart 初始化 thread 類的新例項。由 net compact framework 支援。thre...

c 多執行緒 呼叫帶引數函式

執行緒操作主要用到thread類,他是定義在system.threading.dll下。使用時需要新增這乙個引用。該類提供給我們四個過載的建構函式 以下引自msdn thread threadstart 初始化 thread 類的新例項。由 net compact framework 支援。thre...