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

 


Responder a