> Is it possible to reverse the issue? Keep the original object (living on the 
> main thread) untouched, make a copy for algorithm processing as an async 
> task, then, when done, update the original object from the copy that may have 
> been changed during async processing? Or will that cause the exact same 
> problem in the final step?

Things are simpler than that I think - the object containing the parameters 
won't be changed by running the algorithm. The copy that I want to take will be 
treated as read-only.

To recap/expand:

The primary instance of the object (call it MyParameters) is bound to UI 
elements. Changes to the UI will change the values of its properties 
(int/bool/double). These changes will take place on the main thread.

I would like to be able to take a copy of MyParameters from a thread that is 
not the main thread, and have that copy be a non-corrupted snapshot of the 
primary instance of MyParameters. The copy will not be altered; no changes need 
to be propagated back to the primary instance. Indeed, the motivation behind my 
question is the *requirement* that this copy does not change in any way 
(despite the primary instance possibly changing).

I am not sure how to do this in a fully correct manner. One might naively 
expect that designating properties as "atomic" could be sufficient. However I 
have read that "even atomic properties are not threadsafe" - although I was not 
able to establish the reason for this statement. Perhaps that statement only 
applies to more complex objects, in which case it may be I am worrying over 
nothing.


> 
> Op 3 sep. 2013 om 13:16 heeft Lasse Jansen <la...@lasselog.com> het volgende 
> geschreven:
> 
>>> Since the implementation of -copy is up to you, you could just put 
>>> @synchronized(self){…..} around the code in that method. That implements a 
>>> lock which should make the copy thread-safe.
>> 
>> 
>> No, it wouldn't. It would only ensure that two calls to copy are executed 
>> sequentially. You would need to add @synchronized(self) {…} to all other 
>> methods that modify the object too to ensure that the object isn't changed 
>> during a copy.
>> 
>> 
>> Lasse
>> 
>> 
>> 
>> 
>> Sent with Unibox
>> 
>> 
>> _______________________________________________
>> 
>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>> 
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>> 
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/cocoa-dev/diederik%40tenhorses.com
>> 
>> This email sent to diede...@tenhorses.com


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to