日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++多线程简单入门(二)(Windows版)

發布時間:2025/4/16 c/c++ 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++多线程简单入门(二)(Windows版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前那片文章簡述了如何使用C++多線程。
C++多線程模擬就好像是自己在做一件事情,但是感覺不夠快,就跟自己的朋友說,在自己做的這一部分的時候,你去幫我做另外一部分,那么這樣就提高了效率。

(點擊可查看)在這篇文章中,我們可以看出用endl是比直接寫\n要慢的。所以,我這個要這個特點來展現多線程的過程。

我們不妨來看一下這段代碼:

#include <iostream> using namespace std; #include <thread> void hello() {for (int i = 0; i < 5; ++i) {cout << "In hello()"<< i << endl;} } int main() {thread t(hello);cout << "Before join()\n";t.join(); // 表示在新開的那個進程不結束之前,本進程也是不會結束的cout << "After main()\n";system("pause"); }

這個代碼,我就是在之前的那個版本上進行改進而得到的。在此,我故意在main函數中的部分,使用\n,在hello()函數中用endl。然后接下來,我們會看看輸出的結果,這樣來體會下join()函數。

原理:因為,我們知道了\n要比endl輸出的要快。那么可以看到main函數肯定是要比hello函數要輸出的要快的。

可以看出,Hello跟Before應該是差不多時間出現的,但是之后的After main()是在之前的函數都已經完成之后才出現了。

于是,我們可以猜測,join函數就好像做了限制,就是在這個打開的進程要先完成之后,原來的進程才動。

但具體還是要驗證下:我們將join給關掉。(也就是把這句話給注釋掉)

改完的代碼如下:

#include <iostream> using namespace std; #include <thread> void hello() {for (int i = 0; i < 5; ++i) {cout << "In hello()"<< i << endl;} } int main() {thread t(hello);cout << "Before join()\n";//t.join(); // 表示在新開的那個進程不結束之前,本進程也是不會結束的cout << "After main()\n";system("pause"); }

然后我們再看輸出

發現了沒有,這個main是先自己做好了。但由于我在VS上為了現實,我都是加了system("pause")將框給停下來的,不然的話,這個其實會有點隱患的,畢竟自己你認為這個主函數結束了,所有的程序都結束了,但是實際上卻是有程序還在運行,這樣不就是很冒險么?

  • 不過在主程序的運行的很快,所以導致在這連這個endl都還沒有運行完的時候,就main所有的都結束了。所以就會有那個空行。

總結

以上是生活随笔為你收集整理的C++多线程简单入门(二)(Windows版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。