Página 1 de 1

Variável Global ou Pública pra multithread

Enviado: 27 Mar 2015 11:23
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.

Variável Global ou Pública pra multithread

Enviado: 27 Mar 2015 16:33
por Kapiaba

Variável Global ou Pública pra multithread

Enviado: 27 Mar 2015 18:32
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.

Variável Global ou Pública pra multithread

Enviado: 30 Mar 2015 09:24
por Kapiaba