Threads y travesuras en C++

Iniciado por Kaxperday, 26 Septiembre 2015, 20:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Kaxperday

Hola a todos,

hasta ahora cuando he trabajado con subprocesos he trabajado con async(), pero es lo mismo que un thread o mejor?. Además no son autenticos thread ¿no?.

Lo digo porque cuando programaba en C# y creaba un nuevo thread en el administrador de tareas salían 2 ejecutables con el nombre del programa el normal y el del thread, sin embargo en cpp ¿como se crea un thread así?.

También el mutex me vuelve un poco loco, da muchos errores, la verdad me esta costando trabajar con procesos bastante XD. ¿Dónde lo declaro para que haya uno único para todo el programa.

Simplemente lo necesito para hacer el reescaneo de hosts ya que allí actualizo la lista de victimas, meto mutex actualizo lista y unlock(), y en todas las partes del programa que se accede a la lista lo mismo lock() y unlock() al salir, es horrible.

Saludos.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Citaren todas las partes del programa que se accede a la lista lo mismo

Plantéate englobar todas las partes que hagan lo mismo en un set de funciones o en una clase.

Kaxperday

Si eso hago todas las funciones y subthreads que usan la lista de usuarios que es comun a todas ellas las corro en una función, donde la lista de usuarios es un atributo.

Cuando alguien la modifica antes de eso llamo al mutex, pero es un lío horrible, a veces va mejor cuando no pongo mutex XD.

Busqué acerca de los auténticos threads y los encontré:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx

Pero no es exactamente lo que pensaba, ¿como puedo ejecutar una función de mi programa en otro proceso aparte?, ¿algúen ejemplo?.

Gracias, saludos.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Cita de: Kaxperday en  1 Octubre 2015, 09:55 AM
Busqué acerca de los auténticos threads y los encontré

Ya que C++11 tiene threads, está bien que los uses.

Kaxperday

#4
Ya se a que "threads" te refieres y no son los "autenticos", ya que la clase thread no me crea un subthread.

He creado threads en C# y al ver mi app corriendo en el administrador de tareas me salian varios subthreads (los que había creado).

Sin embargo con C++ hice la prueba de hacer varias clases threads que ejecutaran funciones como en C# hacían y en el administrador de tareas no salía más que uno, y ningún subthread.

Luego la clase thread es lo mismo que auto x = async()... etc que ejecutan un poco uno y luego el otro y así, y no son thread al menos a los que me refiero. Si hay varios de esos el programa no daria a basto necesita un subproceso, otro programa independiente para no cargar tanto el proceso en ejecucion, dividirlo en varios procesos.

Saludos

Parece que esto es a lo que me refería:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx

Saludos.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

La clase thread, crea y representa un thread, que es lo que es.

Usando C++11 no hay razón para utilizar threads de WinAPI.
Un thread cumple la función perfectamente.

Cita de: Kaxperday en  1 Octubre 2015, 20:27 PM
Luego la clase thread es lo mismo que auto x = async()... etc que ejecutan un poco uno y luego el otro y así, y no son thread al menos a los que me refiero. Si hay varios de esos el programa no daria a basto necesita un subproceso, otro programa independiente para no cargar tanto el proceso en ejecucion, dividirlo en varios procesos.

Si pones 1 thread por procesador (contando el principal), con máxima prioridad, usarás toda al CPU, si es lo que pretendes. Los threads, son threads. Son sub-procesos. Y como tales, pueden ejecutarse en paralelo si hay múltiples procesadores. Esa es la función de los threads. En caso de 1 solo procesador, siguen haciendo su función, que es dividir los hilos de ejecución.

¿Qué no ves correcto?

Kaxperday

Hola ivancea, gracias por la respuesta era justo lo que quería saber, no estaba seguro de que creará los subthreads pues en el administrador de tareas no aparecen que es donde los buscaba, y hasta ahora desconocia que existía el monitor de recursos.

Saludos.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.