Cita:
Iniciado por CarlaMedina No entiendo a lo que te refieres con "código independiente del programa principal" (lo siento, es q estoy muy verde en esto :$ )
Un programa (más o menos, podemos asociarlo a proceso) es una tarea de ejecución secuencial. Es decir, una serie de operaciones que se ejecutan una tras otra. Por medio puede haber saltos, iteraciones, desviaciones... pero siempre será una tarea secuencial. Lanzar un proceso independiente de esa "secuencia" es lo que llamas hilo.
Un ejemplo que se suele usar siempre para explicar esto es el de la madre que está comprando en el súper.
La madre irá comprando productos uno tras otro. Dependiendo de la pericia de la madre y de la situación de los productor, incluso parecerá que alguna vez compra dos productos a la vez pero es sólo ilusión (la multitarea de los sistemas mono-procesadores).
Ahora bien, imagina que va a comprar con un hijo. La madre, podrá decirle al hijo que coja otro número en la pescadería (además de el que ella tiene). Así tendrán más "tiempo" de proceso. En el caso que los dos pidan el mismo pez, habrá un problema... y uno de ellos tendrá que esperar.
Hasta ahora, hemos considerado que sólo podrán realizarse compras una vez cada paso de tiempo... para simular un monoprocesador.
Sin embargo, si se pudieran realizar más de una compra con cada paso de tiempo (multiprocesador) el hijo podría ir a comprar el pan mientras la madre está esperando el pescado.
Es posible que pienses que entonces en un sistema monoprocesador no tenga sentido la programación multihilos. Pero es que se asocia incorrectamente programación multihilo a velocidad de ejecución. Como ya has visto, es posible obtener un mayor rendimiento haciéndolo (forzando al micro (sistema operativo) a darme más tiempo de ejecución o haciendo uso de los dos (o más) micros), sin embargo la verdadera importancia de los hilos es que puedes tener un proceso que siga su ejecución normal, mientras cedes otra parte de código está realizando otras tareas.