[concurrency-interest] lockfree programming and threads of different priorities

Andy Nuss andrew_nuss at yahoo.com
Thu Jul 3 10:03:34 EDT 2014


Hi,

I am using a class that I wrote called SimpleLock.  It holds one AtomicBoolean and a public lock() and unlock() method as would make sense.

All my datastructures that have unthreadsafe members that are modified and/or read together (often both) use the model:

myprivatelock.lock();
try {
    ... do some work on unthread safe private members
} finally {
     myprivatelock.unlock();

}

I am seeing some deadlocks in the SimpleLock.lock() function in my various pools of threads.  My model is to use threadpools, all threads within each running at the same priority.  However, the various threadpools run at different priorities.

Currently, it is possible in a class:

class MyDeadLockingClass {

      public add ()
      {
        ...use SimpleLock's lock and unlock

      }

      private remove ()
      {
        ...use SimpleLock's lock and unlock     
      }
}

For the add() and remove() functions to be called within different threadpool threads, and thus at different thread priority.  Could this be a big problem, or is it still safe?  My guess is that it is safe, and I have to look for the cause of deadlocking elsewhere.


Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20140703/3d39af51/attachment.html>


More information about the Concurrency-interest mailing list