Vì tất cả các ghi được lưu trong bộ nhớ cache của hệ thống theo mặc định, có rất ít lợi thế khi thực hiện chồng chéo I/O hoặc tạo một luồng riêng để viết. Hầu hết các cuộc gọi WriteFile chỉ là memcpys tại lõi của họ, được lazily ghi vào đĩa bởi hệ điều hành một cách tối ưu với các bài viết khác. Bạn có thể, tất nhiên, tắt I/O đệm qua cờ sang CreateFile và sau đó có những lợi thế để thực hiện một số loại I/O không đồng bộ - nhưng có thể bạn không nên làm điều đó.
Sửa
Các OP đã làm rõ họ đang có trong thực tế sử dụng không có bộ đệm I/O. Trong trường hợp đó, hai giải pháp được đề xuất gần giống nhau; Windows nội bộ sử dụng một nhóm luồng để phục vụ các yêu cầu I/O không đồng bộ. Nhưng giả thuyết Windows có thể hiệu quả hơn vì nửa của chúng được thực hiện trong hạt nhân, có ít công tắc ngữ cảnh hơn, v.v.
Nguồn
2010-06-16 04:42:37
Cảm ơn. Tôi đã thực hiện un/unuffered I/O cho lợi thế tốc độ - tôi có lẽ nên đề cập đến (tôi sẽ chỉnh sửa câu hỏi của tôi về điều này) – Warpin
Sửa tôi nếu tôi sai, nhưng nếu bạn viết thư cho hệ thống tập tin mạng, viết có thể đệm khác nhau, và bạn có nguy cơ khóa lên thread của bạn nếu sử dụng chặn IO. –
-1 - Chồng chéo ghi trên môi trường đa lõi cho thấy hiệu suất tăng lên. Bạn cũng có thể kết hợp ghi chồng lên nhau từ nhiều luồng vào cùng một tập tin xử lý - Để làm điều đó mà không có cờ chồng lên nhau, bạn sẽ cần khóa sẽ làm giảm hiệu suất. Đối với nhiều IO song song trên cùng một tệp trong Windows, bạn nên luôn sử dụng cờ chồng chéo và sử dụng nhiều luồng hoặc cổng hoàn thành - đó là một lựa chọn thiết kế. –