Página 1 de 1

RLOCK()

Enviado: 04 Fev 2009 16:18
por Eolo
Meio por curiosidade, alguém sabe dizer como o xHarbour bloqueia registros de um DBF quando se usa DBRLOCK() ou RLOCK()? Eu imagino que seja gravado alguma coisa no DBF, para que outros usuários da rede consigam saber do bloqueio... É isso ou é de outra forma?

Também, se eu fechar um DBF sem usar o DBRUNLOCK() ou UNLOCK, como ficam os registros bloqueados? O xHarbour libera todos? E se o EXE for terminado por exemplo por falta de luz, como ficam os registros que estavam bloqueados? Eles são liberados na próxima vez que o DBF for aberto pelo mesmo usuário?

Re: RLOCK()

Enviado: 04 Fev 2009 16:58
por Maligno
Deve ser como é no próprio Clipper, que bloqueia registros com a ajuda do SO, não registros mas "pedaços" do arquivo, que tem tamanho e posição do registro calculados pela aplicação. Na medida em que o programa aborta, o SO libera qualquer lock pendente que esteja associado ao handle da aplicação abortada.

Claro que isso só vale para bancos de dados de acesso local. Em tecnologia cliente/servidor isso tudo é feito pelo servidor do banco de dados.