Not knowing what your design looks like, in my head I am picturing your worker 
thread (which reads / generates the images) maintaining a measure of its 
progress (eg a float from [0,1]) and then exposing that progress value to your 
main thread in which the UI runs. That is the memory I envisioned potentially 
being shared across 2 threads. Assuming that's the case, is it safe? Probably. 
Is it a good habit to get into? Probably not. There is lots of good information 
available on thread-safe software design and programming practices. My point 
was just that the feeling that you had about something not seeming right was in 
fact a correct hunch :)
 
-Stefan



CC: [EMAIL PROTECTED]: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Re: Question about 
NSThread?Date: Wed, 19 Nov 2008 16:37:18 -0500Mmm I see....

Well, right now I would say my worker thread is pretty much just reading values 
(size of image to generate etc)... but it's not "modifying" anything... it 
doesn't change any variables etc... just reads the info it needs to generate 
the images and ...well, generates the images...

If my worker thread doesn't have to "write" in any variables/objects whatever, 
shared with the UI, can I assume that it's safe to leave it like it is?



On 19-Nov-08, at 4:32 PM, Stefan Sinclair wrote:

In a word, yes :) If you are accessing a piece of memory across threads, you 
should be making sure you are synchronizing any access to that memory which 
could occur across threads. For simple primitives (such as possibly your work 
progress number) just using an atomic integer would suffice. For more 
complicated access, you will want better protection (such as using locks around 
any APIs which can access your data). You're probably getting away with it now 
b/c your UI thread (the main thread) is only reading data (the work progress 
value - I'm guessing a single integer or floating point value which can be 
read/written in a single instruction) while the worker thread is modifying it. 
But it doesn't hurt to use proper thread-safe access patterns for data shared 
between threads even for small things like this. -Stefan> From: [EMAIL 
PROTECTED]> To: [email protected]> Date: Wed, 19 Nov 2008 15:57:44 
-0500> Subject: Question about NSThread?> > I have an app that generates a 
bunch of images... the process can be > long so I wanted to start it in a 
separate thread so that the UI can > be responsive etc...> > basically the only 
thing I did was:> > [NSThread detachNewThreadSelector:@selector(doLongProcess) 
> toTarget:self withObject:nil];> > and I added> > NSAutoreleasePool *pool = 
[[NSAutoreleasePool alloc] init];> > at the beginning of my doLongProcess 
method, and [pool release] at the > end...> Now the weird part is that... it 
appears to be working... the images > are created...the UI stays responsive..my 
status textfield gets > updated (it wasn't getting updated when the long 
process was not in a > separate thread)...> > Am I wrong to think that it 
should've been much more complex than > that? (With NSLocks and whatnot...) 
Maybe I should just shut up and be > happy that it work, but somehow this 
doesn't seem right...> > Jean-Nicolas Jolivet> [EMAIL PROTECTED]> 
http://www.silverscripting.com> > 
_______________________________________________> > Cocoa-dev mailing list 
([email protected])> > 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:> 
http://lists.apple.com/mailman/options/cocoa-dev/stefan_sinclair%40hotmail.com> 
> This email sent to [EMAIL PROTECTED]

Proud to be a PC? Show the world. Download the “I’m a PC” Messenger themepack 
now. Download now.


Jean-Nicolas Jolivet
[EMAIL PROTECTED]
http://www.silverscripting.com
_________________________________________________________________
Access your email online and on the go with Windows Live Hotmail.
http://windowslive.com/Explore/Hotmail?ocid=TXT_TAGLM_WL_hotmail_acq_access_112008_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to