On Saturday 05 April 2008 03:50, Florent Daigni?re wrote: > * Matthew Toseland <toad at amphibian.dyndns.org> [2008-04-04 19:22:27]: > > > On Friday 04 April 2008 07:05, nextgens at freenetproject.org wrote: > > > Author: nextgens > > > Date: 2008-04-04 06:05:54 +0000 (Fri, 04 Apr 2008) > > > New Revision: 18975 > > > > > > Modified: > > > trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java > > > Log: > > > Simplify a few things synchronization-wise declaring a few variables > > volatile > > > > I thought there were issues with volatile? Like it's not deterministic, and > > you really should use locking in all nontrivial cases? > > I suggest you read > http://www.javaperformancetuning.com/tips/volatile.shtml :)
"Note however that volatile has been incompletely implemented in most JVMs. Using volatile may not help to achieve the results you desire (yes this is a JVM bug, but its been low priority until recently)." Presumably this doesn't include the mainline Sun VM. "NOTE THE TIP "volatile primitive datatypes have atomic ++ operations" HAS BEEN SHOWN TO BE INVALID" So never use volatile integers/longs/shorts. Hmmm. > > Two things to add: > 1) there is no significant performance cost for > reading a volatile on x86 > 2) The SplitFileInserterSegment class is already a synchronization > nightmare so we'd better reduce the locking to the minimum there : we still > had some unsynchronized accesses to those booleans. > > I think that making those booleans volatile is a step forward fighting > the "requests don't finish" kind of bugs which are likely to be > caused by race-conditions. > Have you seen complaints of splitfile *inserts* not finishing? AFAIK reports are generally of requests not finishing... -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20080405/9832d64b/attachment.pgp>