resueltos programacion hilos ejercicios ejemplos control componentes bloque c multithreading garbage-collection rust boehm-gc

programacion - hilos en java pdf



Ejecución de Boehm GC en múltiples hilos de forma independiente (1)

Estoy experimentando con la escritura de algunos bindings al Boehm GC para Rust.

Algunos antecedentes: Rust está diseñado para ser un lenguaje concurrente alto, y el resultado de este diseño es la capacidad de restringir estáticamente los punteros GC dentro de los hilos en los que fueron asignados (es decir, un puntero GC asignado en el hilo x puede nunca se mantendrá vivo (o incluso se hará referencia alguna) por otro hilo).

Por lo tanto, deseo impulsar a Boehm a sacar provecho de esto para el rendimiento tanto como sea posible:

  1. seguro para subprocesos, por lo que puedo asignar y recopilar de varios subprocesos
  2. detener las colecciones como mínimo (es decir, solo el hilo actual), otros subprocesos pueden seguir ejecutándose porque no pueden interferir con nada relevante para los punteros del GC fuera de ellos mismos
  3. preferentemente, totalmente localmente sin ninguna sincronización entre las "instancias" de GC de diferentes hilos

1 es fácil, pero no puedo encontrar ninguna facilidad para 2 y 3. La parte más importante es 1 y 2 porque quiero poder ejecutar subprocesos en segundo plano, independientemente de lo que estén haciendo los otros subprocesos (incluso si todos son gigabytes de memoria de asignación y recolección de basura).

( Sé de THREAD_LOCAL_ALLOC & gc_thread_local.h , pero eso no satisface del todo 3, simplemente lo hace más eficiente, pero sigue siendo válido para transferir los punteros asignados thread-localmente entre hilos, mientras que no lo necesito esa garantía)