第32章-Boost.Asio
目錄
- I / O服務和I / O對象
- 可伸縮性和多線程
- 網絡編程
- 協程
- 平臺特定的I / O對象
本章介紹了Boost.Asio庫。 Asio代表異步輸入/輸出。該庫使異步處理數據成爲可能。異步意味着在啓動操作時,啓動程序無需等待操作結束。相反,Boost.Asio在操作結束時通知程序。優點是其他操作可以同時執行。
Boost.Thread是另一個庫,它使併發執行操作成爲可能。 Boost.Thread和Boost.Asio之間的區別在於,使用Boost.Thread可以訪問程序內部的資源,而使用Boost.Asio可以訪問程序外部的資源。例如,如果開發了一個需要運行耗時的計算的函數,則可以在線程中調用該函數並使它在另一個CPU內核上執行。線程使您可以訪問和使用CPU內核。從程序的角度來看,CPU內核是一種內部資源。如果要訪問外部資源,請使用Boost.Asio。
網絡連接是外部資源的一個示例。如果必鬚髮送或接收數據,則要求網卡執行該操作。對於發送操作,網卡將獲得一個指向要發送數據的緩衝區的指針。對於接收操作,網卡將獲得一個指向緩衝區的指針,該緩衝區應填充接收到的數據。由於網卡是程序的外部資源,因此它可以獨立執行操作。它只需要時間-您可以在程序中使用它來執行其他操作的時間。 Boost.Asio受益於它們同時執行操作的能力,從而使您可以更有效地使用可用設備。
通過網絡發送和接收數據在Boost.Asio中實現爲異步操作。將異步操作視爲立即返回但沒有任何結果的函數。結果將在以後移交。
第一步,開始異步操作。第二步,異步操作結束時通知程序。開始和結束之間的這種分隔使得可以訪問外部資源而不必調用阻止功能。