(0.8.0)
parallel\Runtime::run — Execução
Agenda a tarefa task
para execução em paralelo.
Agenda a tarefa task
para execução em paralelo, passando argv
no momento da execução.
As Closures programadas para execução paralela não devem:
As instruções proibidas em Closures destinadas à execução paralela são:
Nota:
Fechamentos aninhados podem usar yield ou referências, mas não devem conter declarações de classe ou funções nomeadas.
Nota:
Nenhuma instrução é proibida nos arquivos que a tarefa pode incluir.
Os argumentos não devem conter:
Nota:
No caso de recursos de fluxo de arquivo, o recurso será convertido para o descritor de arquivo e passado como int sempre que possível. Isso não é suportado no Windows.
Objetos internos geralmente usam uma estrutura personalizada que não pode ser copiada por valor com segurança. Atualmente, o PHP não possui o mecanismo necessário para fazer isso (sem serialização). Portanto, apenas objetos que não usam uma estrutura personalizada podem ser compartilhados.
Alguns objetos internos não usam uma estrutura personalizada, por exemplo parallel\Events\Event e, portanto, podem ser compartilhados.
Closures são um tipo especial de objeto interno e suporte que estão sendo copiados por valor e, portanto, podem ser compartilhadas.
Os canais são essenciais para escrever código paralelo e oferecem suporte ao acesso e execução simultâneos por necessidade e, portanto, podem ser compartilhados.
Uma classe de usuário que estende uma classe interna pode usar uma estrutura personalizada, conforme definida pela classe interna, e nesse caso não pode ser copiada por valor com segurança, e, portanto, não pode ser compartilhada.
O parallel\Future retornado não deve ser ignorado quando a tarefa contém uma instrução return ou throw.
Lança uma exceção parallel\Runtime\Error\Closed se parallel\Runtime tiver sido fechada.
Lança uma exceção parallel\Runtime\Error\IllegalFunction se task
é uma closure criada a partir de uma função interna.
Lança uma exceção parallel\Runtime\Error\IllegalInstruction se task
contiver instruções ilegais.
Lança uma exceção parallel\Runtime\Error\IllegalParameter se task
aceitar ou argv
contiver variáveis ilegais.
Lança uma exceção parallel\Runtime\Error\IllegalReturn se task
retornar ilegalmente.