2010-06-16 30 views

Trả lời

5

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.

+0

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

+0

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

-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ế. –

1

Có thể vì chồng chéo I/O trong các cửa sổ sẽ cho Windows để viết ra các tập tin vào thời gian riêng của nó ở chế độ nền, trái ngược với việc sinh ra một luồng hoàn toàn mới và tham gia vào một hoạt động chặn?

+0

Xem câu trả lời của tôi - Windows đã ghi vào các tệp vào thời gian riêng của nó, trong nền, miễn là bạn không 't mess với các thông số mặc định và cố gắng làm điều gì đó điên rồ. WriteFileEx và I/O chồng chéo là không cần thiết. –

1
+2

Đó là phong tục để đặt một bản tóm tắt ngắn (thậm chí một câu) của một liên kết và cách nó liên quan đến câu hỏi. – Stephen

+0

Từ bài viết này (đặc biệt là biểu đồ IO ở trên cùng) nó không có vẻ như tôi như có một lợi thế đáng kể để chồng chéo IO vs ghi vào tập tin trong chủ đề riêng của nó. – Warpin

+0

Bài viết hay, nó giải thích cách hoạt động của tệp I/O không đồng bộ trong cửa sổ. – Meiscooldude

2

Một lợi thế với chồng chéo I/O là nó cho phép một chủ đề duy nhất (hoặc nhiều hơn thường là một thread pool) để xử lý một số tùy ý của I/O yêu cầu đồng thời. Điều này có thể không phải là một lợi thế cho một người dùng, ứng dụng máy tính để bàn, nhưng đối với một ứng dụng máy chủ có thể nhận được yêu cầu cho I/O từ nhiều khách hàng khác nhau, nó có thể là một chiến thắng lớn.

Các vấn đề liên quan