¿Es seguro lo siguiente?C++ Pregunta de hilo: estableciendo un valor para indicar que el hilo ha finalizado
Soy nuevo en threading y deseo delegar un proceso lento en un hilo separado en mi programa C++. Utilizando las bibliotecas Boost que he escrito algo como esto Código:
THRD = nuevo impulso :: hilo (boost :: bind (& miclase :: MyMethod, esto, & finished_flag);
Dónde finished_flag es una miembro booleano de mi clase. Cuando termina el hilo, establece el valor y el ciclo principal de mi programa comprueba si hay un cambio en ese valor. Supongo que está bien porque solo comienzo un hilo, y ese hilo es el Lo único que cambia el valor (excepto cuando se inicializa antes de iniciar el hilo) Entonces, ¿está bien, o me falta algo, y necesito usar bloqueos y mutexes, etc.
No voy a preocuparse tanto por lo que el valor de las memorias caché del compilador como los cachés reales (T1, T2, y T3) en el procesador. La razón es que en una máquina de múltiples procesamientos, las memorias caché para cada procesador pueden no coincidir. Esa es una de las razones por las que usa la palabra clave volátil. –
Sí, quizás, pero por favor: repita después de mí: "bool volátil" NO es un sustituto de la sincronización adecuada. – Thomi