pc:ideas_diplomatura
¡Esta es una revisión vieja del documento!
(el usuario blanco puede editar, Nico)
Ejemplos Formativos vs. Informativos
Dividir ejemplos en:
- Formativos: se mostrarán y pensarán en detalle
- Informativos: paseo rápido.
Formativos
- BoundedBuffer (aka Productores/Consumidores, aka BoundedCounter)
- Concurrent Vector Writing [Fei99] vs. Hand-over-hand locking [2.5.1.4, Lea99]
Informativos
- Nested monitor
Taller
Investigar
- Inyectar ruido en el scheduler, a través de Thread.yield() o toqueteando la JVM.
- Ver [Goe06, 12.1.6 – Generating More Interleavings]
- Mostrar optimizaciones con algún ejemplo simple (*[ x:=x+1; x:=x-1 ])
javap -cdesensabla bytecode. Listado de los VM Opcodes.-serveren lajreoptimiza más.
- Ver como meter algo de
assertpara los invariantes.- La palabra
assertestá desde JDK 1.4.2. - Algunos compiladores necesitan
-source 1.4o-source 5.0para aceptarla. - En la JVM se activa con
java -ea, ver también-esa.
- ?Se puede hacer un ejemplo donde se muestre la sincronización de memoria ya sea con
volatileo consynchronized? - Ver el sourcecode de la JVM en el scheduler y como maneja el
wait. - Que hay en java.util.concurrent:
CondVarsobre todo en Java 6 y Java 5, en Java 1.4.2 no está - Notar que hay opciones muy específicas como:
- 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.)
IncDecStar
Implementar *[ x:=x+1; x:=x-1 ] Deducir el grado de atomicidad de x:=x+1 a partir de si se cumple el invariante 0⇐x⇐2. Es notoria la diferencia entre 1 CPU y 2 CPUs en la riqueza del scheduling. Relacionar esto con el hecho de que el planificador de Java es cooperativo en realidad, o sea no tiene Quanto. Está bueno mostar:
- Como una mala sincronización para hacer incremento atómico falla, por ejemplo
synchronized(this) { }sincroniza con el mismo objeto thread. - Usar AtomicInteger.
- Desensablar con
javap -cy ver que el incremento está desacoplado.
pc/ideas_diplomatura.1173467731.txt.gz · Última modificación: (editor externo)
