O Synchronize deve ser utilizado *apenas* para chamar operações que são inerentemente não seguras, ou seja, não são thread-safe. Por exemplo, chamar coisas relacionadas com a UI do Windows, na esmagadora maioria das vezes, é unsafe.
Se cada arquivo é manipulado por uma thread diferente e os objetos BMP são criados em suas próprias threads então, em teoria, a operação deve ser thread-safe. No entanto, se a classe TBitmap utilizar algum recurso compartilhado de forma não segura no arquivo onde está implementado (sem seção crítica, semáforo ou mutex, por exemplo), então volta o problema e nada disso está garantido. Cabe ao programador saber se o código que ele está invocando é seguro ou não do ponto de vista das threads. Cordialmente, Demian Lessa Salvador - Brasil Filipe wrote: > bom, que eu saiba SEMPRE se deve usar o Synchronize... > > > ----- Original Message ----- > From: "Delphi" <[EMAIL PROTECTED]> > To: "delphi-br" <delphi-br@yahoogrupos.com.br> > Sent: Monday, May 23, 2005 4:53 PM > Subject: RES: [delphi-br] Threads manipulando arquivos > > > Não estou... estou simplesmente chamando o BMP.savetofile('arquivo'). > Não coloquei o synchronize pois só essa thread que manipula o arquivo. Será > que mesmo assim tenho que mandar sincronizar? > É que eu não queria fazer isso pois se a interface do programa está parada > aguardando alguma coisa, a minha thread tb ficará aguardando... atrasando o > processamento. > > Obrigado. > > -----Mensagem original----- > De: Filipe [mailto:[EMAIL PROTECTED] > Enviada em: segunda-feira, 23 de maio de 2005 16:42 > Para: delphi-br@yahoogrupos.com.br > Assunto: Re: [delphi-br] Threads manipulando arquivos > > vc está usando o Synchronize? > ----- Original Message ----- > From: "Delphi" <[EMAIL PROTECTED]> > To: "delphi-br" <delphi-br@yahoogrupos.com.br> > Sent: Monday, May 23, 2005 3:51 PM > Subject: [delphi-br] Threads manipulando arquivos > > Olá pessoal, > Estou desenvolvendo um programa que faz a manipulação de alguns arquivos no > disco dentro de uma thread. > O programa possui várias threads, mas é apenas uma que faz a manipulação com > os arquivos no disco, ela abre um arquivo JPG, converte para BMP e grava > este bmp no disco. Logo em seguida, abre outro arquivo JPG, faz o mesmo > procedimento e grava o BMP no disco com o mesmo nome do gravado > anteriormente, sobrescrevendo. > Em alguns casos, esse procedimento dá um erro dizendo que não existem > recursos disponíveis para continuar, mas existe bastante espaço em disco e > memória. > Gostaria de saber se existe algum problema em executar procedimentos assim > de I/O dentro de uma thread, se existe algum procedimento especial de > sincronização etc. > Fiz alguns testes aqui e quando coloco estes procedimentos fora da thread, > no programa principal, o erro não ocorre. > Se alguém tiver algum material a respeito ou puder me dar algumas dicas, > ficarei agradecido. > Obrigado. -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html