Hilo sin lugar duda, mucho menos costoso y mucho más fácil de comunicarse (puedes usar hasta variables globales).
Cita: Después pensé en los hilos, éstos no lo sé utilizar muy bien y lo poco que he leído es que un hilo puede esperar a que otro termine y le devuelva una respuesta, pero para recibir esta respuesta necesito "dormir" al que espera
No tienes porque quedarte esperando a que termine. Y si lo ejecutas detach() se liberaran los recursos solos.
Te dejo aquí un sistema algo burdo de como podrías hacerlo:
Código C:
Ver originalvoid Hilo(void* param)
{
bool* Terminado = (bool*) param;
Funcion_Bloqueante();
*param = true;
}
void FuncionPadre()
{
bool Terminado;
Crear_Hilo(&Terminado); // Crear hilo, incluir el atributo detach en la implementación
while (1)
{
// otras cosas
if (Terminado
) puts("Hilo terminado"); }
}
La implementación variará dependiendo de la librería de hilos que uses. Y seguramente tengas que hacer un mecanismo de sincronización para la variable bool.
Si usas C++, te recomiendo la librería de hilos que tiene el estándar C++11.