Fórum de Suporte Digivoice
Você não está logado.
Gostaria de saber se as chamadas de call back setadas pela
dg_SetEventCallback são thread-safe?
Se não posso mutex da pthread para sincronizar?
Offline
gbedin,
Não ficou muito claro o que o senhor deseja. Explique detalhadamente o que você quer.
Grato
Offline
felipe escreveu:
gbedin,
Não ficou muito claro o que o senhor deseja. Explique detalhadamente o que você quer.
Grato
Por exemplo, se eu usar a dg_SetEventCallback(minha_função). E dentro de minha função acessar
uma variável compartilhada preciso me preocupar com sincronismo? Ou seja, mais de uma thread
pode chamar a minha_função ao mesmo tempo?
Olhando o código da voicerlib vi que os eventos são gerados tipicamente pela função RaiseEvents_ThreadSafe,
então pergunto: Estes eventos são gerados com um escalonamento cooperativo ou em paralelo ?
Caso exista o problema de sincronismo, posso usar o pthread_lock ou existe alguma função de lock
especial da voicerlib?
Também postei um problema que estou tendo na detscção do evento ENDCALL.
obrigado,
Guilherme
Offline
Olá,
Desculpe a demora a responder.
A thread safe tem um pthread_lock por porta, portanto é possível que mais de uma thread chame sua função ao mesmo tempo, pois o controle será feito por porta.
Obs.Uma porta nunca gerará dois eventos, porém inumeras portas sim.
Os eventos da função RaiseEvents_ThreadSafe são gerados por um escalonamento cooperativo "por canal(porta)", portanto não precisa se preocupar com sincronismo. O recomendado é que suas variáveis sejam sempre criadas por porta.
Atenciosamente,
Digivoice.
Obrigado, era isto mesmo que queria saber.
Mantendo o acesso por porta não preciso usar mutex, vou tirar do meu codigo.
Outra coisa que perguntei em outro tópico e não me responderam ainda.
Não esta sendo gerado o evento de B_END_CALL quando ligo para um número
de telefone fixo só quando ligo para celular.
Tem alguma dica? Imagino que seja algo de inicialização que esteja faltado tentei
várias coisas mas não descobri.
obrigado
Offline
Oi,
Vou responder no outro tópico ok.
Atenciosamente,
Digivoice
Obs.O tópico onde foi respondido é o "EV_E1CHANGESTATUS -> C_B_ENDCALL".