On Fri, 18 Sep 2009 14:27:00 -0400, Angus March
<an...@uducat.com> wrote:

>Pavel Ivanov wrote:
>>> Hell if I know why they use fcntl() for locks, and don't even give
>>> you the option to block.
>>>     
>>
>> I think because they need to detect dead locks. BTW, I believe in case
>> of dead lock even busy_handler will not be called, just SQLITE_BUSY is
>> returned...
>>   
>    I guess that makes sense, in cases where multiple tables are involved.
>
>>>    I think we are a long way from me screwing around with sqlite's
>>> source. What I'm trying for is a solution with my own source code.
>>>     
>>
>> Then neither flock() nor fcntl() will not help you. Your own code have
>> control only over the busy handler which gains control only when
>> database is locked. And it should understand somehow when other
>> process not calling any busy handlers unlocks database... And I
>> believe there's no solution here any better than simple
>> sleep-and-retry.
>>   
>
>    How does this preclude me from coming up w/my own lock file with
>POSIX locks? If a bunch of process start making incompatible requests on
>a single lock file, then they'll be queued and processed in order. 

I think SQLite supports this with 
        BEGIN EXCLUSIVE TRANSACTION;

So, there is no need for an extra lock file.

>I don't see how you can have a deadlock when you have multiple processes
>putting locks on a single, entire file.
-- 
  (  Kees Nuyt
  )
c[_]
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to