Como utilizar ambos nucleos de un procesador x2 ?

Iniciado por el_c0c0, 13 Enero 2009, 06:52 AM

0 Miembros y 2 Visitantes están viendo este tema.

el_c0c0

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!
'-     coco
"Te voy a romper el orto"- Las hemorroides

servl

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

seba123neo

de multihilo esta lleno internet ,¿ pero elegir el procesador donde queres el hilo ?
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

el_c0c0

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
'-     coco
"Te voy a romper el orto"- Las hemorroides

el_c0c0

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
'-     coco
"Te voy a romper el orto"- Las hemorroides


wimacoco

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?

raul338

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