Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: MeCraniDOS en 23 Agosto 2013, 13:10 pm



Título: [?] ¿Multithread?
Publicado por: MeCraniDOS en 23 Agosto 2013, 13:10 pm
Buenas, pues es una pregunta un poco concreta, hay alguno de estos lenguaje que sea multithread?

  • Perl
  • Python
  • Ruby

Tengo un proyecto casi acabado en AutoIt3 y no es multithread, por lo que no funciona como quiero que funcione, y no puedo continuar, quería saber si alguno de esos 3 lenguajes es multithread y sea compatible con AutoIt, tengo casi 2.000 lineas en autoit y traducirlo a otro lenguaje...  :-\

Mi idea era poder hacer lo siguiente, incluir los archivos *.au3, e ir llamando a las funciones creando threads desde otro lenguaje que soporte au3  :-\ :-\

Se que con C/C++ lo de los threads es sencillo, pero la interfaz gráfica la tengo hecha con AutoIt y no se si se puede utilizar , y crear mas de un exe e ir llamándolos es un coñazo  :¬¬ :¬¬


Título: Re: [?] ¿Multithread?
Publicado por: 79137913 en 23 Agosto 2013, 13:12 pm
HOLA!!!

http://stackoverflow.com/questions/2846653/python-multithreading-for-dummies

Solo se que python si.

GRACIAS POR LEER!!!


Título: Re: [?] ¿Multithread?
Publicado por: Danyfirex en 24 Agosto 2013, 23:17 pm
Con Autoit lo puedes hacer sin usar threads  :rolleyes:


Título: Re: [?] ¿Multithread?
Publicado por: MeCraniDOS en 24 Agosto 2013, 23:53 pm
Con Autoit lo puedes hacer sin usar threads  :rolleyes:

Con AutoIt no puedo llamar a mas de una función a la vez  :silbar:


Título: Re: [?] ¿Multithread?
Publicado por: Danyfirex en 24 Agosto 2013, 23:59 pm
la respuesta ya ye la di en otros temas.  :rolleyes:

Tambien se pueden crear hilos. aunque no estables al 100%

Código
  1. $Handle1 = DllCallbackRegister("hilo", "int", "ptr")
  2.  
  3. Func CreateThread($Handle, $struct)
  4. $return = DllCall("kernel32.dll", "hwnd", "CreateThread", "ptr", 0, "dword", 0, "long", DllCallbackGetPtr($Handle), "ptr", DllStructGetPtr($struct), "long", 0, "int*", 0)
  5. Return $return[0]
  6. EndFunc
  7.  
  8. $Struct1 = DllStructCreate("Char[200];int")
  9. DllStructSetData($Struct1, 1, 10)
  10. CreateThread($Handle1, $Struct1)
  11.  
  12.  
  13.  
  14. MsgBox(0x40, "Normal", "Hola mundo")
  15.  
  16. Func hilo($x)
  17. $y = DllStructCreate("char[200];int", $x)
  18. MsgBox(0x40, "Desde hilo", "Soy un hilo")
  19. EndFunc
  20.  
  21.  


saludos


Título: Re: [?] ¿Multithread?
Publicado por: MeCraniDOS en 25 Agosto 2013, 00:48 am
Tambien se pueden crear hilos. aunque no estables al 100%

Perfecto  ;-)
Las funciones tienen que estar en una Dll o algo? o como funciona el código que me has puesto  :huh:


Título: Re: [?] ¿Multithread?
Publicado por: Danyfirex en 25 Agosto 2013, 01:05 am
Prueba el código cual dll?  :rolleyes:

aunque con ya te dije en otro tema con AdliRegister solucionas el problema :)


Título: Re: [?] ¿Multithread?
Publicado por: MeCraniDOS en 30 Agosto 2013, 11:21 am
Prueba el código cual dll?  :rolleyes:

aunque con ya te dije en otro tema con AdliRegister solucionas el problema :)

Entonces que es mejor usar  :huh: :huh:

Esto?


Código
  1. $Handle1 = DllCallbackRegister("hilo", "int", "ptr")
  2.  
  3. Func CreateThread($Handle, $struct)
  4. $return = DllCall("kernel32.dll", "hwnd", "CreateThread", "ptr", 0, "dword", 0, "long", DllCallbackGetPtr($Handle), "ptr", DllStructGetPtr($struct), "long", 0, "int*", 0)
  5. Return $return[0]
  6. EndFunc
  7.  
  8. $Struct1 = DllStructCreate("Char[200];int")
  9. DllStructSetData($Struct1, 1, 10)
  10. CreateThread($Handle1, $Struct1)
  11.  
  12.  
  13.  
  14. MsgBox(0x40, "Normal", "Hola mundo")
  15.  
  16. Func hilo($x)
  17. $y = DllStructCreate("char[200];int", $x)
  18. MsgBox(0x40, "Desde hilo", "Soy un hilo")
  19. EndFunc

O Esto?

Código
  1.  
  2. AdlibRegister("Tufuncion",10*1000)
  3.  
  4.  
  5. ;aqui tu codigo para Buscar
  6.  
  7.  
  8.  
  9. Func Tufuncion()
  10. ;aqui el codigo para clikear.
  11. EndFunc

Saludos  :rolleyes:


Título: Re: [?] ¿Multithread?
Publicado por: Danyfirex en 30 Agosto 2013, 14:37 pm
Para lo que quieres esto es suficiente.

Código
  1. AdlibRegister


saludos


Título: Re: [?] ¿Multithread?
Publicado por: MeCraniDOS en 30 Agosto 2013, 16:59 pm
Si, la función es muy simple y fácil de usar, ya he solucionado el problema

Gracias  :silbar:


Título: Re: [?] ¿Multithread?
Publicado por: Danyfirex en 30 Agosto 2013, 17:12 pm
Sarcasmo?  :huh:


Título: Re: [?] ¿Multithread?
Publicado por: MeCraniDOS en 30 Agosto 2013, 17:18 pm
Sarcasmo?  :huh:

No, iba en serio, ya he solucionado el problema... :-\  :-(

He añadido al final
Código
  1. AdlibUnRegister("La_Funcion")

Porque sino se me pone la CPU al 100%  ;-)


Título: Re: [?] ¿Multithread?
Publicado por: Danyfirex en 30 Agosto 2013, 18:00 pm
para que no consuma mucho puedes poner un sleep(100) en bucle de tu aplicación. (el que la mantiene activa)

saludos