dennisbarrios@gmail.com 1. Qiero crear !ebras en mi "rograma# $A!ora %e !ago& Crear hebras se puede ver como subdividir tu programa en varios frentes de ejecucin, lo que debes hacer es usar alguna instruccin que haga este trabajo por ti, como se muestra en la siguiente figura: Entonces, a partir de la lnea donde se llama a la funcin crear hebra, el programa se ha dividido en dos, y solo va a terminar cuando ambas hebras terminen. La lnea siguiente a la funcin crearebra continuar! ejecut!ndose normalmente y por otro lado la funcin proceso tambi"n comen#ar! a ejecutarse, ambas hebras $la original y la reci"n creada% estar!n ahora compitiendo por los recursos y por el procesador. Entonces si lo que quieres es una funcin que haga esto lo puedes hacer asi: En C/C++ sobre linux y usando el estndar POSSIX threads (pthreads) En el main, o en la funcin que dar! origen a la nueva hebra deber!s usar la siguiente funcin con & par!metros: int pthread'create$pthread't (restrict thread, const pthread'attr't (restrict attr, void ($(start'routine%$void(%, void (restrict arg%) Esta funcin solo va a ser reconocida si incluyes la biblioteca pthread.h Los par!metros son: thread *+ puntero a una variable del tipo pthread't que tu debes crear pues alli se va a almacenar el ,- de tu hebra attr *+ puntero a una variable del tipo attr't que tu puedes crear si deseas modificar los atributos est!ndar de una hebra. Entre los atributos podemos encontrar detachstate $si es independiente o no%, guardsi#e $area de resguardo de la pila%, inheritsched $se heredan o no politicas de planeamento%, schedparam $una estructura de tipo sched'param donde se puede configurar la prioridad del proceso%, schedpolicy $para cambiar la estrategia de planificacin que el sistema operativo usa en la hebra%, scope $si el proceso va a competir con las hebras de su propio proceso o con los procesos de todo el sistema%, stac.addr $especifica la void main$%/ 0 crearebra$0% 0 1 void proceso$%/ 0 2utinas 0 1 direccin donde ser! creada la pila de la hebra, el tama3o es 452E6-'756C8'9,:%, stac.si#e $especifica el tama3o mnimo de la pila% start_routine *+ puntero a una funcin que tu debes crear de la forma void funcion $parametro%, el par!metro puede ser tanto un tipo de dato simple como un compuesto $objetos o estructura%. arg *+ el par!metro de nuestra funcin, lo recibe como void ( porque puede ser cualquier tipo de dato. Es importante que a la hora de compilar le avises al compilador que use la biblioteca del 4;77,< threads para construir tu ejecutable, entonces debes incluir =lpthreads en tu ma.efile o tu lnea de compilacin, por ejemplo g>> programa? =o prog? *lpthreads En C/C++ sobre indos y usando el estndar POSSIX threads (pthreads) '.