Existe um utilitário que é usado para carregar arquivos (e executar outras operações no arquivo) em um local compartilhado da rede.
O tamanho do arquivo tende a variar de alguns mb a 500 mb.
Surgiu uma sugestão de que talvez devêssemos oferecer suporte à multi-threading ao fazer upload dos arquivos para o local compartilhado - não é necessário fazê-lo em blocos de bytes - cada thread deve escolher um arquivo e tentar fazer o upload.
Não tenho certeza se o multithreading pode acelerar operações de E / S como esta. Meu palpite é válido?
Se, de fato, somos obrigados a criar essa funcionalidade, eu estava pensando qual seria uma boa abordagem de design para o mecanismo de cópia de arquivos?
Faria sentido usar uma ferramenta como robocopy (eu li que as versões mais recentes suportam multithreading)?
Edit: Desculpas pelo atraso e falta de algumas informações vitais.
Esse utilitário é criado usando C # (.Net 2.0) e qualquer atualização futura também deve estar usando .Net (a versão da estrutura não é uma restrição). O utilitário é instalado nas máquinas dos usuários (cerca de 20 no WinXP). O compartilhamento de destino está no servidor Win2k3.
Edit 2: decidiram executar alguns testes com um aplicativo simples implementando o upload do arquivo através do TPL. Após esta análise, decidiremos se vamos ou não em frente. Obrigado a todos pela ajuda estendida.
SHFileOperation(FO_COPY)
. Isso oferece a você todas as otimizações que as pessoas da Microsoft consideraram razoáveis.
select
loop em vez de threads. Embora isso exija que você "vire seu código de dentro para fora" (o código para copiar um arquivo não é mais uma sequência direta de comandos), você não precisará se preocupar com a sincronização de threads.