Forums > Dev

Thread Safety & Object Deletion

February 24, 2006 | 2:49 am

Hey… I have an external, which is, for the most part, thread safe. My one remaining concern is this:

In overdrive, will my object ever have its delete (free) method called by one thread while other threads are still inside performing calculations and such? If so, is there any commonly-accepted way in an external to tell said still-busy thread to abort ASAP?

Thanks

-Alex


March 15, 2006 | 5:40 am

Hi Alex – I didn’t see an answer to your Q, so sorry if this is stuff
you already have figured out.

I believe the free method will only ever get called from the main
thread. I’m sure someone will correct me if I’m wrong. That said, it
is unlikely but possible for the object to be processing something in
the scheduler or perform threads and be deleted at the same time.

Ben


March 15, 2006 | 11:04 am

On 15-Mar-2006, at 6:40, Ben Nevile wrote:
> I believe the free method will only ever get called from the main
> thread.

Unless I’m very much mistaken, an object’s instantiation method is
guaranteed to be called from the main thread *and can make
assumptions based on that premise*. (In the old days this included
things like NewPointer() and NewHandle() being safe).

Since a free method is almost necessarily predicated on the same
assumptions that the instantiation method is (e.g., freeing up memory
allocated with NewPointer() or NewHandle() or whatever), it would be
highly uncool to call xxx_free() from anywhere else.

IOW: Boyohboy, I sure hope you’re right!

– P

————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine | +–> Litter Power & Litter Bundle for Jitter
|…………………………………………….
p@castine.de | iCE: Sequencing, Recording, and Interface Building
pcastine@gmx.net | for Max/MSP
pcastine@bek.no | http://www.dspaudio.com/ Extremely cool
4-15@kagi.com |…………………………………………….
| home|chez nous|wir|i nostri http://www.castine.de/


Viewing 3 posts - 1 through 3 (of 3 total)