Claro, como lo dice el titulo. Es que ultimamente ninguno de los programas que he visto estresan los 2 nucleos. Solo 1.
Por ejemplo si yo quiero plantar un thread en el Nucleo #2 y otro thread en el Nucleo #1, y en cada uno hacer un Do: DoEvents: Loop... algo simple que estrese ambos nucleos...
Si yo hago eso, el micro quizas ronde los 46% y si nos fijamos en el grafico por nucleo, solo el nucleo #1 esta trabajando como gato. Pero el otro esta tranquilo, ni se mosquea...
Por eso, yo queria saber como hacer esto? aunque sea para correr un thread en el nucleo #2 y no molestar en gran parte al #1.
PD: Yo se que desde el administrador de tareas, desde la opcion Establecer afinidad podemos hacer esto; pero yo queria hacerlo mas independiente, y no solo excluirse del nucleo #1, sino qe dentro del codigo este la opcion de usarlo o no.
Ademas que este sujeto a la cantidad de nucleos, yo dije x2 porque yo tengo x2.. pero algun suertudo tendra X4 o X8...
saludos!
en vb lo podes hacer con multithread, yo simplemente lo hago diferente ya para la programacion de juegos (ao, y un par que ise en 3d o como aoyind) usa una dll echa por mi en c++ que llama al multithread, ya que en vb es muy lento, malo y trae problemas, te recomiendo pasarte a c++, o si queres agregame y te paso la dll
de multihilo esta lleno internet ,¿ pero elegir el procesador donde queres el hilo ?
Cita de: seba123neo en 14 Enero 2009, 02:07 AM
de multihilo esta lleno internet ,¿ pero elegir el procesador donde queres el hilo ?
Podes hacer con el api SetProcessAffinityMask (que me pasaste vos). A su vez tenes la otra api GetProcessAffinityMask. Con eso lo limitas, pero no es la idea original, que seria que cada thread este en un nucleo distinto.
saludos
Aprovechando este thread, queria pedir ayuda con una API. GetLogicalProcessorInformation (http://msdn.microsoft.com/en-us/library/ms683194(VS.85).aspx). Directamente no se como llamarla.. Supongo que ambos parametros son del tipo Long. En fin, llamando a la funcion con el Buffer = 0 te devuelve el len del buffer desde el otro parametro..
Mas que eso no sabria ... si alguien puede ayudarme...
desde ya muchas gracias
saludos
SetThreadAffinityMask (http://msdn.microsoft.com/en-us/library/ms686247(VS.85).aspx)
Cita de: servl en 14 Enero 2009, 01:13 AM
en vb lo podes hacer con multithread, yo simplemente lo hago diferente ya para la programacion de juegos (ao, y un par que ise en 3d o como aoyind) usa una dll echa por mi en c++ que llama al multithread, ya que en vb es muy lento, malo y trae problemas, te recomiendo pasarte a c++, o si queres agregame y te paso la dll
Holas servl esta muy inetesante lo q dices acerca de ese dll q hiciste, me lo podrias pasar para hacerle pruebas en mis trabajo, si?
Cita de: el_c0c0 en 13 Enero 2009, 06:52 AM
Claro, como lo dice el titulo. Es que ultimamente ninguno de los programas que he visto estresan los 2 nucleos. Solo 1.
Por ejemplo si yo quiero plantar un thread en el Nucleo #2 y otro thread en el Nucleo #1, y en cada uno hacer un Do: DoEvents: Loop... algo simple que estrese ambos nucleos...
Si yo hago eso, el micro quizas ronde los 46% y si nos fijamos en el grafico por nucleo, solo el nucleo #1 esta trabajando como gato. Pero el otro esta tranquilo, ni se mosquea...
Por eso, yo queria saber como hacer esto? aunque sea para correr un thread en el nucleo #2 y no molestar en gran parte al #1.
PD: Yo se que desde el administrador de tareas, desde la opcion Establecer afinidad podemos hacer esto; pero yo queria hacerlo mas independiente, y no solo excluirse del nucleo #1, sino qe dentro del codigo este la opcion de usarlo o no.
Ademas que este sujeto a la cantidad de nucleos, yo dije x2 porque yo tengo x2.. pero algun suertudo tendra X4 o X8...
saludos!
Eso se llama programacion paralela, actualmente no se como se usa, pero quiero investigar cuando ya tenga algun tiempo libre....igual cualquier aporte lo vere ;D