Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #3012
| Date | 2011-04-09 09:29 -0700 |
|---|---|
| From | Patricia Shanahan <pats@acm.org> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Threads and statics |
| References | <905p9gFpuoU1@mid.individual.net> <inlnjn$6c1$1@dont-email.me> <deadlocks-20110409180331@ram.dialup.fu-berlin.de> |
| Message-ID | <5cCdnewnF63EFD3QnZ2dnUVZ_j2dnZ2d@earthlink.com> (permalink) |
On 4/9/2011 9:08 AM, Stefan Ram wrote: > Eric Sosman<esosman@ieee-dot-org.invalid> writes: >> manipulates). Make sure the data is always seen in a consistent >> state, except perhaps by the *one* thread that's in the act of >> changing it; then you'll have a correct program. > > It still could have potential deadlocks. > > IIRC, deadlocks can happen when two threads each need two > resources and already have obtained access to one of them. > Each thread now waits for the other one to release the > other resource. > > I have little knowledge about multithreading, but from this > it seems that one can avoid deadlocks as long as one can > avoid situations where more than one resource needs to be > obtained for exclusive access at the same time. That is the trivial case, and is related to one of the simpler deadlock avoidance strategies: Establish a partial order among all lockable resources. Locking B while holding A is safe if, and only if, A precedes B in the partial order. > > From what I heard, for any realistic project, it is > impossible to be sure that one got this right. For example, > a program was written by experts in multithreading and then > showed a deadlock the first time after several years of use. > Successful multi-threading is most likely with a defense in depth. Testing alone is not enough - a bug that happens once per thousand hours of running some type of workload is difficult to find through testing, but would cause a deadlock once per system per month at a site with the right sort of workload. There is often a temptation during testing to ignore failures that only happen once and cannot be reproduced. If the development team gives in to that temptation, testing becomes even less effective as bugs need to be produced multiple times before they are taken seriously. Theoretical analysis, such as defining a partial order and desk checking or reviewing for correct use of the order, may also help. Another line of attack on this is to look for ways of recovering from deadlocks, such as applying database transaction concepts more widely. Patricia
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Threads and statics Dirk Bruere at NeoPax <dirk.bruere@gmail.com> - 2011-04-07 13:34 +0100
Re: Threads and statics Patricia Shanahan <pats@acm.org> - 2011-04-07 05:41 -0700
Re: Threads and statics Robert Klemme <shortcutter@googlemail.com> - 2011-04-07 07:38 -0700
Re: Threads and statics Lew <lew@lewscanon.com> - 2011-04-07 08:20 -0700
Re: Threads and statics Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-04-07 18:47 -0300
Re: Threads and statics markspace <-@.> - 2011-04-07 09:32 -0700
Re: Threads and statics Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-04-07 21:14 -0400
Re: Threads and statics Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-09 18:15 +0200
Re: Threads and statics Lew <noone@lewscanon.com> - 2011-04-09 13:06 -0400
Re: Threads and statics Patricia Shanahan <pats@acm.org> - 2011-04-09 09:29 -0700
Re: Threads and statics Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-04-09 09:29 -0700
Re: Threads and statics Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-04-09 14:57 -0400
Re: Threads and statics "Mike Schilling" <mscottschilling@hotmail.com> - 2011-04-10 23:10 -0700
Re: Threads and statics Tom Anderson <twic@urchin.earth.li> - 2011-04-11 13:25 +0100
Re: Threads and statics Lew <noone@lewscanon.com> - 2011-04-11 08:58 -0400
csiph-web