C++併發編程0 - 歡迎來到多線程的世界

博客原文:www.freehacker.com

C++11中引入了多線程編程,一般教科書中都沒有涉及到這個概念,但是在工作中多線程卻又是必不可少的。本文會展示最基本的Hello World, Concurrency程序。

概述

C++11之後,多線程終於被支持了,C++開發者再也不需要藉助boost等第三方庫的力量,來實現跨平臺的並行編程。語言層面上的支持,能夠讓開發者更加專注於業務邏輯,從而減少對系統平臺的關注。C++11多線程的引入,讓C++編程更加高效和簡便。

最近一直研究多線程編程,忽然有感,如果我每掌握一個知識點,便分享出來,這比我矇頭死學更加高效。如果我的使用不正確,也有機會被指出來。所以便想整理網絡或者書籍上所能學到的東西,寫一個教程出來,力求能讓剛入門不久的C++開發者,也能輕鬆的掌握併發編程的奧妙。

本教程不涉及太多原理性東西,需要那些知識的可以百度,或者買本《C++併發編程實戰》,網路上或書籍裏原理性的東西已經夠多了,我想寫的是讓讀者看完之後,能夠很輕鬆的知道,該怎麼用C++的多線程機制。其中,很多內容都是來自網路或者書籍上,感謝各位大神慷慨的分享。

如果沒有特殊提及,本教程的所以代碼都是基於Visual Studio 2013,如果更換其他編譯器有可能無法運行。

Hello World

經典的Hello World式開端。

#include <iostream>
#include <thread>
void hello()
{
    std::cout << "Hello world, concurrency" << std::endl;
}
int main()
{
    std::thread t(hello);
    t.join(); // 沒有這句話,會Debug Error的
    return 0;
}

這段代碼很簡單,如果用過boost多線程編程,那麼應該對這個瞭如指掌了。首先包含線程庫頭文件,然後定義一個線程對象t,線程對象負責管理以hello()函數作爲初始函數的線程,join()等待線程函數執行完成——這兒是阻塞的。

這個最簡單的Hello World已經包含了多線程編程的基本結構,至於線程管理、數據共享、線程同步、原子操作,以及一系列進階操作都會在後面詳細闡述。


關注微信公衆號FreeHacker

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章