objective c - When is it safe to use -[NSManagedObjectContext lock]? -
i know should abide coredata's thread confinement rules in general, ever safe use -[nsmanagedobjectcontext lock]
, friends? know accessing nsmanagedobject
property can trigger implicit nsmanagedobjectcontext
fetch if nsmanagedobject
has unloaded properties, assume have wrap nsmanagedobject
property accesses around -[nsmanagedobjectcontext lock]
, -[nsmanagedobjectcontext unlock]
. thought gotcha. there others?
in comments of this answer, marcus zarra says i'm misinterpreting the documentation -\[nsmanagedobjectcontext lock\]
, friends:
sending message managed object context helps framework understand scope of transaction in multi-threaded environment. preferable use nsmanagedobjectcontext’s implementation of nslocking instead using of separate mutex object.
also, above quote implies can use other locks guard nsmanagedobjectcontext
. true?
i'm not worried parent/child contexts question.
in academic setting, can use locks? yes.
should ever use them in production code? no. why? because odds of getting right first time extra-ordinarily high. getting right in maintenance mode rapidly approaches zero.
using locks access core data asking trouble. when wrong lose/corrupt data. when right breaking thread confinement. lose/lose gamble nothing gain.
the worst part there virtually no way know if got "right" until or unless lose data. never worth risk.
i point this response ben should give nice history on subject.
Comments
Post a Comment