Herramientas de usuario

Herramientas del sitio


pc:ideas_diplomatura

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
pc:ideas_diplomatura [2007/03/09 19:15] nicolaswpc:ideas_diplomatura [2018/08/10 03:03] (actual) – editor externo 127.0.0.1
Línea 13: Línea 13:
 === Informativos === === Informativos ===
   * Nested monitor   * Nested monitor
 +
 +
 +
 +
 +
 +
  
  
Línea 43: Línea 49:
     * [[http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-summary.html|Java6]]     * [[http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-summary.html|Java6]]
     * [[http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html|Java5]]     * [[http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html|Java5]]
-  * Notar que hay opciones muy específicas como: +  * Notar que hay opciones muy específicas en la [[http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp|HotSpot]] JVM como: 
-  -XX:PreBlockSpin=10 +   <code> 
-    Spin count variable for use with -XX:+UseSpinning. Controls the maximum spin iterations allowed before entering operating system thread synchronization code. (Introduced in 1.4.2.)+-XX:PreBlockSpin=10 
 + 
 +Spin count variable for use with -XX:+UseSpinning. 
 +Controls the maximum spin iterations allowed before entering operating system thread synchronization code. (Introduced in 1.4.2.) 
 + 
 +-XX:-UseSpinning 
 + 
 +Enable naive spinning on Java monitor before entering operating system thread synchronizaton code. (Relevant to 1.4.2 and 5.0 only.) [1.4.2, multi-processor Windows platforms: true] 
 +   </code>
  
  
Línea 57: Línea 71:
   * Como una mala sincronización para hacer incremento atómico falla, por ejemplo ''synchronized(this) { }'' sincroniza con el mismo objeto thread.   * Como una mala sincronización para hacer incremento atómico falla, por ejemplo ''synchronized(this) { }'' sincroniza con el mismo objeto thread.
   * Usar [[http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/atomic/AtomicInteger.html|AtomicInteger]].   * Usar [[http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/atomic/AtomicInteger.html|AtomicInteger]].
-  * Desensablar con ''javap -c'' y ver que el incremento está desacoplado.+    * Mirar la implementación de esto que básicamente usa ''compareAndSwapInt'' que internamente usa ''sun.misc.Unsafe'', y de esta última no encontre sourcecode FIXME. Aparentemente está en los fuentes del SDK que se bajan del sitio "developers"
 +  * Desensablar con ''javap -c'' y ver que el incremento está desacoplado. Notar los ''monitorenter'', ''monitorexit''
 +<code> 
 +   36:  monitorenter 
 +   37:  aload_0 
 +   38:  getfield        #15; //Field N:LMyInt; 
 +   41:  dup 
 +   42:  getfield        #52; //Field MyInt.value:
 +   45:  iconst_1 
 +   46:  iadd 
 +   47:  putfield        #52; //Field MyInt.value:
 +   50:  aload_1 
 +   51:  monitorexit 
 +</code> 
 + 
 + 
 + 
 +== DoubleCheckTest == 
 + 
 +Bill Pugh, produjo un [[http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckTest.java|ejemplo]] limpio del problema //[[http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html|The "Double-Checked Locking is Broken" Declaration]]//
 + 
 +El problema es que para Java5 no saltan los errores. FIXME 
 + 
 + 
 +== Lock-free, wait-free linked lists == 
 + 
 +  * //"[[http://www.cs.rochester.edu/u/scott/papers/1996_PODC_queues.pdf|Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms]]"// 
 +  * **ABA problem**. Problema con las arquitecturas de 64bits en [[http://www.research.ibm.com/people/m/michael/RC23089.pdf|ABA Prevention Using Single-Word Instructions]]. Alguna discusión de problemas de addressing-shrink en las arquitecturas de 64bits: [[http://blogs.msdn.com/oldnewthing/archive/2004/08/17/215682.aspx|The Old New Thing : Why is the virtual address space 4GB anyway?]]. 
 +  * FIXME Ver como es la implementación en ''java.util.concurrent''
 +  * Pensar en algo más global con Producer/Consumer.
  
pc/ideas_diplomatura.1173467731.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)