Desde 4D v11, tanto o servidor de bases de dados como o servidor SQL utilizam multi-tarefas preventivas. Começando com 4D v13, o Servidor Web em modo estático também utiliza o preemptivo. Agora com o v15 R5, a linguagem 4D também pode ser executada em processos preventivos.
As suas aplicações 4D compiladas poderão agora tirar o máximo partido dos computadores multi-core para que a sua execução seja mais rápida e possam suportar mais utilizadores conectados.
Qual é a diferença entre o modo Cooperativo e Preemptivo?
O modo cooperativo é agendado por processos e só pode utilizar um núcleo. O modo Preemptivo é agendado pelo SO e pode utilizar todos os núcleos disponíveis.
Aqui um exemplo com dois processos e dois núcleos:
Como posso executar um método em processos preventivos?
Por defeito, 4D irá executar todos os métodos de projecto em modo cooperativo. Se quiser beneficiar da funcionalidade de modo preventivo, o primeiro passo consiste em declarar explicitamente todos os métodos que deseja iniciar em modo preventivo.
Para o fazer, existe uma nova propriedade “Modo de execução” nas propriedades do método. Tem 3 opções:
- Pode ser executado em modo preventivo
- Não pode ser executado em modo preventivo
- Indiferente
Ao abrir a sua base de dados com 4D v15 R5, todos os seus métodos serão definidos como Indiferentes.
Como posso verificar se o meu código pode ser executado em processos preventivos?
Basta escrever o seu código e depois o compilador verifica se o método é compatível ou incompatível.
Para ver um exemplo, veja este vídeo:
Se quiser reproduzir todas as demonstrações anteriores, sugerimos que descarregue a seguinte base de dados de exemplo.
Como posso saber que comandos podem ser executados em processos preventivos?
Os comandos 4D que podem ser executados em processos preventivos são indicados na documentação por um novo ícone. Este ícone é encontrado no lado superior direito.
Na v15 R5, está disponível um primeiro conjunto de comandos. Acrescentaremos mais comandos no seguinte lançamento R.
Sugerimos que descarregue o seguinte HDI. Actualizámos o comando “Command name” para que possa descobrir se o comando pode ou não ser executado em modo preventivo.
Para mais detalhes, consulte o manual de actualização 4D v15 R5.