On Aug 19, 2007, at 03:10, Christiaan Hofman wrote:

>
> On 19 Aug 2007, at 1:50 AM, Adam R. Maxwell wrote:
>
>> I was looking at some of the refactoring in Skim, and noticed that  
>> the
>> file functions are supposed to be thread safe.  Isn't there a
>> potential race condition in SKTemporaryDirectoryCreating, if multiple
>> threads are creating baseTmpDir or incrementing a counter to find a
>> unique name?  In BibDesk's NSFileManager method we use
>> @synchronized(self) to guard against that, but the function might  
>> need
>> a mutex created in an __attribute__((constructor)) (or use CFUUID to
>> make a unique name).
>>
>> --  
>> adam
>
> @synchronize actually is completely useless here, as this only works
> when it's used always, which is certainly not true here. Note that
> NSFileManager itself is not thread safe.

@synchronized() works fine here; it's a category method that only we  
call, so the mutex /is/ always used.  And yes, I know NSFileManager is  
not thread safe...that's why I wrote many of the category methods for  
BibDesk.  Looking at BibDesk again, it still suffers from a race  
condition, since it returns a path without creating it, so subsequent  
parallel calls can easily get the same name.

-- 
adam

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
skim-app-develop mailing list
skim-app-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-develop

Reply via email to