join的阻斷到底是什么意思呢?
下面兩段代碼為什么在vs上執行效果不一樣呢?
thread t1(func);
thread t2(func);
thread t3(func);
thread t4(func);
thread t5(func);
t1.join();
t2.join();
t3.join();
t4.join();
t5.join();
thread t1(func);
t1.join();
thread t2(func);
t2.join();
thread t3(func);
t3.join();
thread t4(func);
t4.join();
thread t5(func);
t5.join();
uj5u.com熱心網友回復:
各個執行緒都是獨立的,不一樣不是正常嗎?所以在執行緒訪問資料需要加鎖,同步需要信號uj5u.com熱心網友回復:
請問大神,怎么確定一個執行緒是否已經開始執行呢?
uj5u.com熱心網友回復:
加上列印試試看?除錯一下就知道啦
uj5u.com熱心網友回復:
上面是先執行所有執行緒,再等待所有執行緒執行完成。下面是執行一個,等待其完成,往復下一個。
怎么會一樣?
uj5u.com熱心網友回復:
t.join()指的是當前代碼所在的執行緒wait()等待t執行緒運行結束再繼續執行,各個執行緒的cpu和代碼堆疊都是獨立的,僅資料共享,體會一下uj5u.com熱心網友回復:
上面的是多執行緒,下面的異化成單執行緒了。uj5u.com熱心網友回復:
第一段代碼,開始1,開始2,開始n,等待1結束(可能,2,3,4,n)已經結束了。第二段代碼,開始1,等待1結束,開始2,等待2結束,開始n,等待n結束。
uj5u.com熱心網友回復:
thread t1(func);//已經開始執行t1.join();//等到t1執行完畢
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/25877.html
標籤:C++ 語言
上一篇:求大佬解釋 我是學了2天的
下一篇:C語言讀寫檔案
