Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #3012

Re: Threads and statics

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)

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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