mark kaplun wrote:
"Darin Fisher" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]

mark kaplun wrote:

I have a multi threaded aplication. Should I make all my objects

threadsafe


or just those which are really being accessed from different threads?

what


are the pros and cons?. Any clue is appriciated.

Thanks,
 Mark.



my advice is to carefully select a minimal number of objects which need
to be accessed by more than one thread and minimize the number of entry
points into those objects that can be called on more than one thread.
this helps you focus on getting the thread safety right in exactly/only
the places where you know you need it.  don't go overboard on trying to
make everything threadsafe.  it probably isn't worth it.

also, if you're moving a process onto a background thread, then try to
separate the objects which must live on that thread from the objects
that live on other threads.  maybe have only one object that can be
touched by both threads.  let it be an object that delegates between
objects on the two threads.  a simple, focused, deliberate MT design is
much better than one that tries to be multithreaded in general.

an event queue is also a great thread synchronization tool.  it can help
you keep separate the objects living on different threads.

darin



Thanks Darin, this are all good points. I guess the fualt was in my question
I meant to try to understand the difference between using NS_IMPL_ISUPPORTS1
and NS_IMPL_THREADSAFE_ISUPPORTS1. currently I use initialy
NS_IMPL_ISUPPORTS1, and only when an assertion ocoures I change it to the
thread safe version. Do I simply waste my time and should always use
NS_IMPL_THREADSAFE_ISUPPORTS1 ?

Mark.




ah, for mozilla NS_IMPL_ISUPPORTSX is almost always right. most things in mozilla happen only on the main/UI thread. background threads are used by the networking library internally to implement asynchronous i/o. if you don't need to play in that area of the code, then you most likely don't need to care about multiple threads.

darin




Reply via email to