一些特殊檔案具有與單個寫入相關的語意。(例如,FunctionFS(用戶空間中的 USB 小工具)將單個寫入與單個 USB 傳輸中的一系列 USB 資料包相關聯。兩個寫入永遠不會合并到一個 USB 資料包中。因此第一個寫入可能以一個短資料包結束。 )
因此,我不想使用,因為它允許對傳遞的流asio::async_write的底層進行零次或多次呼叫。async_write_some但是,如果我stream.async_write_some直接使用,它允許并非所有資料都已寫入。
我需要的是保證流的async_write_some(of posix::basic_stream_descriptor) 將序列中的所有緩沖區傳遞給向量化寫入系統呼叫,并且只有在系統呼叫決定這樣做時才寫入更少的資料。
我怎樣才能做到這一點?我走錯路了嗎?
uj5u.com熱心網友回復:
你會在 POSIX API 方面使用什么?很可能它最終會得到與 ASIO 掛鉤的完全相同的底層 API。因此,如果該 API 以您描述的方式運行,您可以期望 ASIO 以相同的方式運行(不會導致部分完成)。
我很容易知道 ASIO 可能對緩沖區劃分/操作有意見的唯一地方是出于性能原因可能在寫入之前組合 SSL 緩沖區序列的另一種方式。
如果我們知道您嘗試對比/影響分析的兩個界面,這將有所幫助。asio::posix::stream_descriptor例如,使用或asio::serial_port出于明顯原因之間會有區別。可能存在平臺差異,但由于 FunctionFS,我假設平臺是 Linux。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/519723.html
