Página 1 de 1

threads no harbour

Enviado: 02 Ago 2008 14:46
por hrodrigom
Boa tade caros colegas

Como eu uso threads com o harbour?

Grato

Re: threads no harbour

Enviado: 02 Ago 2008 20:58
por rodrmigu
Olá,

No Harbour não tem, por enquanto. No xHarbour dê uma olhada em /xharbour/tests/mt*.prg

[]'s
Rodrigo

Re: threads no harbour

Enviado: 02 Ago 2008 21:02
por hrodrigom
E como eu poderia deixar rodando uma função em segundo plano no harbour?
Esta função chamaria outra em algum momento.

com xharbour eu já estou conseguindo, mas gostaria de usar a xhgtk para fazer alguns testes, mas não estou conseguindo usar o xharbor+xhgtk no windows.

Já consigo gerar a libxhgtk com xharbour, mas não consigo compilar minha aplicação.

Re: threads no harbour

Enviado: 03 Ago 2008 11:21
por rodrmigu
Olá Rodrigo,

No Harbou não tem como. Mas enfim, qual o problema que vc está enfrentando? Pois o xharbour que vem com o instalador da xhgtk está funcionando. Aliás vou pedir pra mover esta thread pra lista da xhgtk.

[]'s
Rodrigo

Re: threads no harbour

Enviado: 04 Ago 2008 21:33
por hrodrigom
Testei o xHarbour que vem no instalador, funciona.
Mas não tem nenhuma biblioteca *mt
Baixei o xharbour para mingw em http://www.xharbour.org, re-compilei a lib xhgtk. E ai não funciona mais nada,

Veja o final do erro.

Código: Selecionar todos

ference to `hb_mouse_Col'

C:\xHgtk\xharbour\lib/librtl.a(mouseapi.o):mouseapi.c:(.text+0x65): undefined re

ference to `hb_mouse_Row'

C:\xHgtk\xharbour\lib/librtl.a(mouseapi.o):mouseapi.c:(.text+0x75): undefined re

ference to `hb_mouse_SetPos'

C:\xHgtk\xharbour\lib/librtl.a(mouseapi.o):mouseapi.c:(.text+0x85): undefined re

ference to `hb_mouse_IsButtonPressed'

C:\xHgtk\xharbour\lib/librtl.a(mouseapi.o):mouseapi.c:(.text+0x95): undefined re

ference to `hb_mouse_CountButton'

C:\xHgtk\xharbour\lib/librtl.a(mouseapi.o):mouseapi.c:(.text+0xa5): undefined re

ference to `hb_mouse_SetBounds'

C:\xHgtk\xharbour\lib/librtl.a(mouseapi.o):mouseapi.c:(.text+0xb5): undefined re

ference to `hb_mouse_GetBounds'

C:\xHgtk\xharbour\lib/librtl.a(gt.o):gt.c:(.text+0x56): undefined reference to `

hb_gt_Version'

C:\xHgtk\xharbour\lib/librtl.a(maxrow.o):maxrow.c:(.text+0x50): undefined refere

nce to `hb_gt_info'

C:\xHgtk\xharbour\lib/librtl.a(maxrow.o):maxrow.c:(.text+0x7a): undefined refere

nce to `hb_gt_info'

C:\xHgtk\xharbour\lib/librtl.a(maxrow.o):maxrow.c:(.text+0xd0): undefined refere

nce to `hb_gt_info'

C:\xHgtk\xharbour\lib/librtl.a(maxrow.o):maxrow.c:(.text+0xfa): undefined refere

nce to `hb_gt_info'

collect2: ld returned 1 exit status

C:\xHgtk\samples\functions>build trayicon

Re: threads no harbour

Enviado: 05 Ago 2008 10:44
por rodrmigu
Rodrigo,

Vou tentar compilar o xharbour que está no instalador, mas com a opção MT. Qualquer novidade eu posto aqui.

UPDATE:

O problema acima deve ser a falta da GTNUL, que antes era necessário link. Atualmente, tnato xharbour ou harbour nao precisa. Mas acho que a versão que esta lá é muito antiga.

[]'s
Rodrigo

Re: threads no harbour

Enviado: 05 Ago 2008 15:26
por rodrmigu
Rodrigo,

Eu não consegui compilar o xharbour do cvs para o MinGw com suporte a MT. Aliás, deram centenas de warnings na compilação entre outros vários warnings, etc, enfim, esta é uma das coisas que me irritam no xharbour, uma hora funciona e depois numa nova versão já para de funcionar :P

Entretanto, consegui compilar a ultima versao do xharbour com o MSVC 7.1 e consegui linkar tb com suporte MT e testar junto com xhgtk. Ou seja, talvez a sua saída se desejar usar MT, seja usar o MSVC.

Se vc não tiver o MSVC 7.1 command line gratuíto me avise. Se quiser eu posso lhe mandar o xharbour do cvs já compilado tb.

Este foi o programa que testei:

Código: Selecionar todos

#include "hbclass.ch"
#include "xhgtk.ch"

PROCEDURE Main()
    Local oWindow
    Local oButton1
    Local oButton2

        INIT WINDOW oWindow ;
             AT 0,0         ;
             TITLE "Button Command Test"  ;
             SIZE 640, 480  ;
             CENTER         ;
             RESIZEABLE     
            
            @ 435, 460 BUTTON oButton1 ;
                       CAPTION "_Ok"    ;
                       SIZE  80, 30 ;
                       ACTION Test() ;
                       HINT "Ok Hint" ;
                       IMAGE "gtk-ok" ;                       
                       OF oWindow
                       
            @ 400, 550 BUTTON oButton2 ;
                       CAPTION "_Close" ;
                       SIZE  80, 80 ;
                       ACTION oWindow:close() ;
                       HINT "Close Hint" ;
                       IMAGE "gtk-close" POSITION GTK_POS_TOP;
                       OF oWindow
                                
        ACTIVATE WINDOW oWindow
RETURN

PROCEDURE Test()

  LOCAL nStart := Seconds()
  LOCAL oMyObject := MyClass()
  LOCAL MethodPtr := HB_ObjMsgPtr( oMyObject, "Count" )
  LOCAL xThread

  CLEAR SCREEN

  nStart := Seconds()

  // 1st param is the Startup Function, 2nd. is Self if 1st param is a Method or NIL otherwise,
  // rest are paramaters to be passed to the Function/Method.
  StartThread ( @MyThreadFunc(), 2, "1st Thread:",     0,  5000 )
  StartThread ( @MyThreadFunc(), 4, "2nd Thread:",  5000, 10000 )
  StartThread ( @MyThreadFunc(), 6, "3rd Thread:", 10000, 15000 )

  WaitForThreads()
  @ 8, 0 SAY "Threads Time:" + Str( Seconds() - nStart )

  nStart := Seconds()

  // StartThread() for methods can be called using an already available
  // Method Pointer or using a method name
  StartThread ( oMyObject, "Count", 10, "1st Thread:",     0,  5000 )
  StartThread ( oMyObject, "Count", 12, "2nd Thread:",  5000, 10000 )
  StartThread ( oMyObject, MethodPtr, 14, "3rd Thread:", 10000, 15000 )

  WaitForThreads()
  @ 16, 0 SAY "[METHODS] Threads Time:" + Str( Seconds() - nStart )

  nStart := Seconds()

  MyThreadFunc( 18, "1st Run:",     0,  5000 )
  MyThreadFunc( 20, "2nd Run:",  5000, 10000 )
  MyThreadFunc( 22, "3rd Run:", 10000, 15000 )

  @ 24, 0 SAY  "Sequential Time:" + Str( Seconds() - nStart )

  Inkey(0)
RETURN

PROCEDURE MyThreadFunc( nRow, cName, nStart, nMax )

  LOCAL i

  FOR i := nStart TO nMax
     //@ nRow, 10 SAY cName + Str( i )
     // Atomic operation
     DispOutAt(nRow, 10, cName + Str( i ))
  NEXT

RETURN

CLASS MyClass
    METHOD Count( nRow, cName, nStart, nMax )
ENDCLASS

METHOD Count( nRow, cName, nStart, nMax ) CLASS MyClass
  LOCAL i

  FOR i := nStart TO nMax
     //@ nRow, 10 SAY cName + Str( i )
     // Atomic operation
     DispOutAt(nRow, 10, cName + Str( i ))
  NEXT

RETURN NIL
[]'s
Rodrigo

Re: threads no harbour

Enviado: 27 Ago 2008 22:15
por mhackervix
A alguns Meses atraz andei testando com o Xailer (xHarbour) e não obtive sucesso, inclusive postei duvidas aqui no forum. Consegui colocar minha aplicação com thread para rodar utilizando Xbase++.

att.

Re: threads no harbour

Enviado: 01 Set 2008 19:39
por sygecom
Olá Mhackervix,
Seria possivel você colocar um passo a passo para ajudar inciantes que querem testar a xbase++ , estou querendo testar, mas nem sei de onde baixar, e como dar os primeiros passos ou até mesmo se posso aproveitar algo dos meus sistema que esta usando lib de terceiros como a VL, se for possivel, abra um topico em:
viewforum.php?f=28

Desde já Agradeço.....

Re: threads no harbour

Enviado: 02 Set 2008 12:41
por software_facil
Não sei se alguém lembra, mas ai vai o link : http://www.recital.com/index.htm?/produ ... &mainFrame
Se alguém for comprar, e quiser me dar uma cópia de presente, estou aceitando, não sou orgulhoso !

Abraços

Re: threads no harbour

Enviado: 02 Set 2008 16:31
por mhackervix
sygecom escreveu:Olá Mhackervix,
Seria possivel você colocar um passo a passo para ajudar inciantes que querem testar a xbase++ , estou querendo testar, mas nem sei de onde baixar, e como dar os primeiros passos ou até mesmo se posso aproveitar algo dos meus sistema que esta usando lib de terceiros como a VL, se for possivel, abra um topico em:
viewforum.php?f=28

Desde já Agradeço.....
Abra o tópico e me avise que colocarei um passo a passo inicial.

att.

Re: threads no harbour

Enviado: 09 Abr 2009 18:31
por mhackervix
O Demo e documentações do xBase++ podem ser obtidas no site da Alaska ( http://www.alaska-software.com ).

att.