De vueltas pero con Hilos. :)
Tengo un ejercicio de C muy simple de hilos con “Hola desde el hilo ...”, como sigo queriendo medir tiempos con openMP y con Go voy a ver esta vez cuanto de rápido es más o menos con hilos.
Por ejemplo, para saber cuantos hilos voy a utilizar en C con OpenMP es: omp_get_num_threads();
Que en Go traduzco así: runtime.GOMAXPROCS(max_hilos)
Mi cuestión es esta: ¿Cómo sería en Go saber el identificador del hilo?
En C con OpenMP es: omp_get_thread_num();
Así me muestra el resultado por pantalla en C cuando introduzco 2 hilos:
Hola desde el hilo identificado como el numero: 1 del total de 2 hilos
Hola
desde el hilo identificado como el numero: 0 del total de 2 hilos
Gracias por leer y por participar.
Hola Inés.
Creo que en golang-nuts comentaron que no hay identificador de "gorrutina".
Puedes guardarlo en una variable local de cada gorrutina.
Hay muchas maneras de hacer eso.
Respecto a esto:
runtime.GOMAXPROCS(max_hilos)
Creo que sirve para decirle al programa cuántos procesadores puede usar, nunca lo he usado, no sé si te dará la información que buscas.
Si no te la da, para saber cuántas gorrutinas están corriendo lo debes contar. No sé si hay alguna manera en el package runtime u otro package.
Saludos
--
---
Has recibido este mensaje porque estás suscrito al grupo "golang-spanish" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a golang-spanis...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
¡¡Hola!!
Estoy con los hilos y las entiendo como que son una goroutina lanzada ... no?
(Esto no es una afirmación, es que me lia y entonces, digo si será el hilo como más parecido... por favor, corregidme!)
func Es_Primo(m int, n int, c chan int) {
Aquí va toda la función para saber si es primo o no.
}
c <- 1
Y aquí le añado un 1 al canal que entiendo estoy ocupándolo para ir enviado el número a comprobar si es primo o no
}
Luego en func main() cuando utilizo la función Es_Primo en la goroutina, creo el canal y lo libero simplemente así:
<- c
Sólo necesito entender bien si es así como creo el canal y lo libero luego, ya que entiendo que envío un 1 para ir enviando la información del número primo al rango que he de mostrar y el canal cuando acaba de recibirlos (envío/recibo) lo libero al final como comento.
Gracias por leer.
Un saludo.
Sólo necesito entender bien si es así como creo el canal y lo libero luego, ya que entiendo que envío un 1 para ir enviando la información del número primo al rango que he de mostrar y el canal cuando acaba de recibirlos (envío/recibo) lo libero al final como comento.