Có một tiện ích chúng tôi có được sử dụng để tải tệp lên (và thực hiện các thao tác khác trên tệp) lên vị trí chia sẻ mạng.
Kích thước tệp có xu hướng thay đổi từ vài mb đến 500 mb.
Một gợi ý đã đưa ra rằng chúng ta có thể nên hỗ trợ đa luồng khi tải các tệp lên vị trí được chia sẻ - không bắt buộc phải thực hiện theo từng byte - mỗi luồng nên chọn một tệp và cố gắng tải lên.
Tôi không chắc chắn nếu đa luồng có thể tăng tốc các hoạt động IO như thế này. Linh cảm của tôi có hợp lệ không?
Nếu thực sự chúng tôi được yêu cầu xây dựng chức năng này, tôi đã tự hỏi điều gì sẽ là một phương pháp thiết kế tốt cho công cụ sao chép tập tin?
Sẽ có ý nghĩa khi sử dụng một công cụ như robocopy (tôi đọc các phiên bản mới hơn hỗ trợ đa luồng)?
Chỉnh sửa: Xin lỗi vì sự chậm trễ và thiếu một số thông tin quan trọng.
Tiện ích này được xây dựng bằng C # (.Net 2.0) và mọi cập nhật trong tương lai cũng phải sử dụng .Net (phiên bản khung không phải là một ràng buộc). Tiện ích được cài đặt trên máy của người dùng (khoảng 20 tất cả trên WinXP). Chia sẻ mục tiêu là trên máy chủ Win2k3.
Chỉnh sửa 2: đã quyết định chạy một số thử nghiệm với một ứng dụng đơn giản thực hiện tải lên tệp thông qua TPL. Đăng phân tích này, chúng tôi sẽ quyết định có đi trước hay không. Cảm ơn mọi người vì sự giúp đỡ mở rộng.
SHFileOperation(FO_COPY)
. Điều đó giúp bạn có tất cả các tối ưu hóa mà mọi người ở Microsoft cho là hợp lý.
select
vòng lặp thay vì các luồng. Mặc dù làm như vậy đòi hỏi bạn phải "bật mã ra" (mã để sao chép tệp không phải là một chuỗi lệnh đơn giản nữa), bạn sẽ không phải lo lắng về đồng bộ hóa luồng.