使用boost io_service時,需要注意的東西
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
boost::asio 在創建io_service時,可以指定線程數,如果沒有指定,默認是一個線程,也就是io_service run的那個線程,如果沒有任務運行,該線程會退出。
如果在創建的時候指定了線程數,那么io_service在執行的時候線程數就可以并發執行,如果你run的線程還是只有1個,那么io_service想多線程執行也沒有條件,asio在內部是沒有創建多線程的,所以這個時候需要你來手動創建多個線程執行io_service的run操作,這樣才可以提高效率。順便說下,worker輔助類可以保證ioservice一直run下去,直到調用stop,才會退出,這個是個很不錯的用法。另外客戶端異步模式是使用的select模型,會創建一些線程來實現異步的功能,所以在使用異步connect的時候,會asio會創建一定的線程數目。
所以大家在使用asio的時候,想提高效率,那么一定要注意合適的線程數。還有別忘記使用worker類了。
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成