Coexistência de comandos de segurança dos fios e de não segurança dos fios

Tradução automática de Deepl

Alguma vez precisou de utilizar métodos com chamadas com e sem fios, com condições que saltam sobre comandos que não são seguros para os fios? Actualmente o compilador impede fazer isto e é atirado um erro, mas há uma bandeira que lhe permite desactivar esta verificação e este post no blogue mostra-lhe como.


Num método de chamada, pode já ter alterado ambas as partes do código; uma parte para o modo preventivo e a outra parte para o modo cooperativo. Contudo, neste caso, o compilador considera que o método completo não é seguro para os fios, mesmo que a parte cooperativa do código não seja executada em modo preventivo. Os métodos que chamam a este método também não são considerados “thread-safe”!

E agora?

Para o ajudar nesta transição de cooperativo para preventivo, 4D permite agora desactivar a verificação dos comandos de segurança de threads do compilador em partes do código. Para o fazer, basta colocar a directiva //%T- do compilador antes do código não seguro de threads e //%T+ depois dele.

Aqui está uma amostra que é considerada pelo compilador como thread-safe:

PROCESS PROPERTIES(Current process;$name;$state;$time;$flags)
$isPreemptive :=($flags?? 1)
If ($isPreemptive)
LOG EVENT (Into Windows log events; "Ocorreu um erro xy")
Else
//%T-
DIALOG ("myErrorDialog";New object("mensagem"; "Ocorreu um erro xy"))
//%T+
End if

Se executar comandos não seguros entre as directivas //%T- e //%T+ do compilador num processo preventivo, 4D simplesmente atira um erro.

Avatar
• Proprietário do produto - Damien Fuzeau entrou ao time 4D Product em fevereiro de 2019. Como Proprietário do Produto, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Damien é formado em engenharia de software pela Universidade de Nantes. Trabalhou mais de 23 anos em sua empresa anterior, primeiro como desenvolvedor (descobrindo 4D em 1997), e mais tarde como gerente de engenharia e arquiteto de software. Essa empresa é um Partner OEM de 4D e lançou softwares empresariais baseados em 4D para milhares de usuários em centenas de servidores. Portanto Damien está acostumado ao desenvolvimento e lançamento de 4D em contextos multilinguais.