首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 文件操作封裝機制解析:跨平台 API 與 Win32 異步 I/O

     編輯:MySQL 資料庫相關知識

雙套文件操作 API 共存原因

MySQL 在不同 OS 使用標準 C 庫函數(open/close/seek/read/write)與 Win32 API(CreateFile/CloseHandle/SetFilePointer/ReadFile/WriteFile)。兩套均可建立文字/二進制檔案,功能對應:

C 庫Win32 API
read()ReadFile()
write()WriteFile()
seek()SetFilePointer()
close()CloseHandle()

Win32 擴展文件概念與 CreateFile 關鍵

Win32 將「文件」概念擴展:通訊設備、命名管道、郵件槽、磁碟、控制台,皆用 CreateFile 開啟/建立。

HANDLE CreateFile(
  LPCTSTR lpFileName,           // 檔名
  DWORD dwDesiredAccess,        // 存取模式
  DWORD dwShareMode,            // 共享模式
  LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 通常 NULL
  DWORD dwCreationDistribution, // 建立方式
  DWORD dwFlagsAndAttributes,   // 屬性與標誌
  HANDLE hTemplateFile          // 臨時檔句柄,通常 NULL
);

成功返回檔案句柄,失敗返回 INVALID_HANDLE_VALUE。

同步 vs 異步 I/O:效能關鍵

  • 同步:未指定 FILE_FLAG_OVERLAPPED。函數阻塞直到操作完成,執行緒等待,效率低。
  • 異步:CreateFile 指定 FILE_FLAG_OVERLAPPED。ReadFile/WriteFile 立即返回,耗時 I/O 在後台進行,執行緒可處理其他任務,**大幅提升效率**。

此異步機制值得我們在自身文件操作封裝中借鑑,透過平台相關封裝提升 I/O 效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved