Variável Global ou Pública pra multithread

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Variável Global ou Pública pra multithread

Mensagem por JoséQuintas »

Não lembro se criaram isso.
Em multithread, variável pública não é visível entre threads, a não ser que defina alguns parâmetros na hora de chamar a thread.
Tem alguma variável que fica visível?

Motivo:
Estou com um pequeno problema com conexão ADO.
Se deixar o sistema parado, ao encerrar dá erro na conexão, como se o conteúdo da variável tivesse sumido.

Fui pesquisar na internet o erro 6005, e acabei achando um post MEU mesmo, antigo.
Acabei descobrindo que acontecia o tal erro apenas quando a variável era STATIC, mas não quando era PUBLIC.
Isso serviu pra ajustarem a forma como o Harbour eliminava variáveis STATIC, e ficou resolvido.

Como em multithread a variável pública não fica visível, e não queria complicar, um teste seria criar algum tipo de variável pública visível a todas as treads. Vi algo sobre variáveis globais, mas não lembro se isso existe no Harbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Variável Global ou Pública pra multithread

Mensagem por Kapiaba »

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Variável Global ou Pública pra multithread

Mensagem por JoséQuintas »

O post que indicou apenas mostra exemplo de multithread e nada sobre variáveis.

Já uso multithread há algum tempo, e sei que tem a opção de manter variáveis públicas, usava assim antigamente:

Código: Selecionar todos

   hb_threadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_MEMVARS_COPY ), @thFunc() )
Mas isso me parece gambiarra, e ao invés de solução pode criar problemas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Variável Global ou Pública pra multithread

Mensagem por Kapiaba »

Responder