Thanks,
I got confused a bit with the Monitor.Pulse/PulseAll doc because it says
here:
"The thread that currently owns the lock on the specified object invokes
this method to signal all threads waiting to acquire the lock on the object.
After the signal is sent, the waiting threads are moved to the ready queue.
When the thread that invoked PulseAll releases the lock, the next thread in
the ready queue acquires the lock."
So I thought I need to do Pulse so the other thread waiting can try to get
the lock.
Thanks,
wes
Not sure what your doing, but you don't need pulse here. All other
threads will block on lock (if they lock the same syncRoot instance) and be
release in turn as lock is released. hth
--
William Stacey, MVP
Hi List,
I have a question on collection synchronisation. For example I have an
ArrayList called myList and the code is like this:
lock (myList.SyncRoot)
{
// do update on myList
Monitor.PulseAll(myList.SyncRoot);
}
Question, do I need to do Monitor.PulseAll() in here? Because the code
above is potentially accessed by several thread.
Thanks,
Wes