引用傳遞,指標傳遞的注意事項:因為執行緒2裡使用的是執行緒1的變數a,所以如果執行緒1比執行緒2提前結束了,結束的同時就會釋放變數a的記憶體空間,可是這時執行緒2還沒結束,再去訪問執行緒1中的變數a的話,就會發生意想不到的錯誤!!!
2,引用傳遞,例子:
#include
#include
#include
#include
using
namespace std;
voidf2(
int& i)
voidf1(
int& i)
intmain()
執行結果:
f1:10
f2:0
執行結果分析:
列印出【f1:10】的原因可能是,①處分離執行緒後,main函式所在的執行緒還沒有結束,所以i還沒有被釋放掉,所以能列印出10;還有可能是main函式所在的執行緒雖然已經結束了,但是巧合的是值還是10。
列印出【f2:0】的原因是,②處分離執行緒後,執行緒f1已經結束了,所以函式f1裡的j已經被釋放了,這時執行緒f2再訪問j的時候就是0了。
3,指標傳遞,例子:
#include
#include
#include
#include
using
namespace std;
voidf2(
int* i)
voidf1(
int& i)
intmain()
執行結果:
f1:10
f2:0
執行結果分析:
列印出【f1:10】的原因可能是,①處分離執行緒後,main函式所在的執行緒還沒有結束,所以i還沒有被釋放掉,所以能列印出10;還有可能是main函式所在的執行緒雖然已經結束了,但是巧合的是值還是10。
列印出【f2:0】的原因是,②處分離執行緒後,執行緒f1已經結束了,所以函式f1裡的j已經被釋放了,這時執行緒f2再訪問j的時候就是0了。
4,unique_ptr作為引數傳遞,必須使用move函式
#include
#include
#include
#include
using
namespace std;
void
f1(unique_ptr<
int> upt)
intmain()
5,函式的指標作為引數傳遞
#include
#include
#include
#include
using
namespace std;
class
test};
intmain()
C 多執行緒引數傳遞
在多執行緒或單執行緒任務中,讓執行緒帶傳入引數一直是個麻煩的問題,通常有種方法就是以類,對像的變數來傳引數,這種方法理解上很簡單不過在某些場合使用很麻煩,這裡就不介紹了,我們主要介紹一種.net2.0中新增加的帶引數執行執行緒的方法,示例程式如下 parameterizedthreadstart p...
C 多執行緒引數傳遞
c 多執行緒引數傳遞 在多執行緒或單執行緒任務中,讓執行緒帶傳入引數一直是個麻煩的問題,通常有種方法就是以類,對像的變數來傳引數,這種方法理解上很簡單不過在某些場合使用很麻煩,這裡就不介紹了,我們主要介紹一種.net2.0中新增加的帶引數執行執行緒的方法,示例程式如下 parameterizedth...
C 多執行緒引數傳遞
c 多執行緒引數傳遞 在多執行緒或單執行緒任務中,讓執行緒帶傳入引數一直是個麻煩的問題,通常有種方法就是以類,對像的變數來傳引數,這種方法理解上很簡單不過在某些場合使用很麻煩,這裡就不介紹了,我們主要介紹一種.net2.0中新增加的帶引數執行執行緒的方法,示例程式如下 parameterizedth...