Página 1 de 1

Exemplo pra "enxergar" multithread

Enviado: 05 Dez 2024 20:21
por JoséQuintas
Agora que me dei conta.
Tem muito exemplo de multithread, mas nenhum com visão disso.

Código: Selecionar todos

PROCEDURE Main()

   SetMode( 25, 80 )
   CLS
   Altd()
   hb_ThreadStart( { || Otro() } )
   hb_ThreadStart( { || Otro() } )
   hb_ThreadStart( { || Otro() } )
   Inkey(0)

   RETURN

FUNCTION Otro()

   LOCAL nCont

   hb_gtReload( "WVG" )
   SetMode( 25, 80 )
   CLS
   Altd()
   FOR nCont = 1 TO 100
      ? nCont
      Inkey(1)
   NEXT

   RETURN Nil
https://www.youtube.com/watch?v=KwK2DrLjc8A



Como dá pra ver, é como ter vários EXEs, cada um roda à vontade.
O vídeo deixa isso nítido, porque dá até pra fazer debug em uma thread enquanto a outra está rodando.
E se fechar a thread principal, fecha tudo, porque não coloquei nada pra impedir isso.

Exemplo pra "enxergar" multithread

Enviado: 05 Dez 2024 20:38
por JoséQuintas
Multithread é o mesmo que ter várias dialogs ?

Talvez sim, talvez não.

Que tal este motivo:
Processador Intel Core I9-14900, 3.6Ghz (5.8Ghz Turbo), Cache 36MB, Intel LGA 1700, 24-core 32-threads

Um computador com 32 threads, como se fossem 32 motores.
Vai ficar usando tudo no motor 1, e deixar 31 motores sem fazer nada ?
Se estão inventando computadores com cada vez mais threads, é porque existe uso e vantagem nisso.
Sempre tem alguma situação onde se possa tirar vantagem disso.

ADO faz uso de multithread...
Talvez por isso seja rápido, sei lá....

Exemplo pra "enxergar" multithread

Enviado: 05 Dez 2024 21:26
por JoséQuintas
Então...

Quando comecei com GTWVG, e testei o menu windows, as coisas entraram como multithread.
Foi só por isso que comecei com multithread.

Gostei do comportamento com DBFs, é ótimo.

Código: Selecionar todos

USE CLIENTES SHARED
SET INDEX TO CLIENTES
SET ORDER TO 2
@ 0, 0 GET nCodigo VALID OkCliente( nCodigo )
...
CLOSE DATABASES
Isso acima, pode ser usado tranquilamente em multithread, abrir quantas dialogs quiser com isso.
Nada de ficar inventando ALIAS pra trabalhar com janelas diferentes, controlar DBFs abertos, índices em uso, etc.
Rotina de validação sempre igual, afinal, mesmo alias e mesmos índices.

E por fim, pra misturar LIBs, cada LIB em uma thread diferente.

No final, uso multithread não para o que ela foi inventada, acabei encontrando situações aonde foi vantagem fazer uso de multithread.

Exemplo pra "enxergar" multithread

Enviado: 06 Dez 2024 16:45
por developer
No final, uso multithread não para o que ela foi inventada
Mas então para que multithread foi inventada?