Tengo una aplicación que generará múltiples hilos. Sin embargo, creo que podría haber un problema con los subprocesos que acceden a los datos que no deberían ser. Soy relativamente nuevo en el roscado tan desnudo conmigo.Pasar estructuras de datos a diferentes hilos
Aquí es la estructura de la aplicación roscada (lo siento por la crudeza):
MainThread
/ \
/ \
/ \
Thread A Thread B
/ \ / \
/ \ / \
/ \ / \
Thread A_1 Thread A_2 Thread B_1 Thread B_2
Bajo cada con letras hilo (que podría ser muchos), sólo habrá dos hilos y que son disparados de forma secuencial. El problema que estoy teniendo es que no estoy del todo seguro de cómo pasar una estructura de datos en estos hilos.
Entonces, la estructura de datos se crea en MainThread, se modificará en el hilo con letras (Subproceso A, etc.) específico de ese subproceso y luego se enviará una variable miembro de esa estructura de datos a Subprocesos Letter_Numbered.
Actualmente, la clase de subproceso tiene una variable miembro y cuando se construye la clase, la estructura de datos de mainthread se pasa por referencia, invocando el constructor de copia para que el subproceso tenga su propia copia para jugar.
La cadena de caracteres con número de letra simplemente toma una variable de cadena de la estructura de datos dentro del subproceso con letras. Mi pregunta es, ¿es esto aceptable? ¿Hay una forma mucho mejor de garantizar que cada hilo con letras tenga su propia estructura de datos para jugar?
Perdón por la explicación algo pobre, por favor deje los comentarios y trataré de aclarar.
EDITAR: Entonces, ¿mi constructor de hilo con letras debe tomar el VALOR de la estructura de datos, no la referencia?
Quizás cuéntanos un poco sobre lo que quieres lograr. Estoy un poco desconcertado por el uso de dos hilos secuenciales: ¿te refieres a que uno comienza cuando termina el otro? – mdma
+1 para la pregunta bien articulada –
@mdma: ¿te refieres al lettered_numbered? Si es así, entonces sí, el hilo con letras despide el primer lettered_numbered, espera que termine (o error) y despide el segundo lettered_numbered. ¿Eso ayuda? – Robb