parallel parallel\Runtime::run

(0.8.0)

parallel\Runtime::run — Execution


설명

public parallel\Runtime::run(Closure $task): ?Future

병렬로 실행할 task을 예약해야 합니다.

public parallel\Runtime::run(Closure $task, array $argv): ?Future

실행 시간에 argv를 전달하여 병렬로 실행할 task을 예약합니다.


매개변수

task
특정 특성을 가진 Closure.
argv
실행 시 task에 전달할 특정 특성을 가진 인수 배열입니다.

Task Characteristics

병렬 실행을 위해 예약된 클로저는 다음을 수행해서는 안 됩니다.

  • accept or return by reference
  • accept or return internal objects (see notes)
  • execute a limited set of instructions

병렬 실행을 위한 클로저에서 금지된 명령은 다음과 같습니다.

  • yield
  • use by-reference
  • declare class
  • declare named function

메모: 중첩된 클로저는 참조로 생성하거나 사용할 수 있지만 클래스 또는 명명된 함수 선언을 포함해서는 안 됩니다.

메모: 작업에 포함될 수 있는 파일에는 지침이 금지되어 있습니다.


Arguments Characteristics

인수는 다음을 수행해서는 안 됩니다.

  • contain references
  • contain resources
  • contain internal objects (see notes)

메모: 파일 스트림 리소스의 경우 리소스는 파일 설명자로 캐스팅되고 가능한 경우 int로 전달됩니다. 이는 Windows에서 지원되지 않습니다.


Internal Objects Notes

내부 객체는 일반적으로 값으로 안전하게 복사할 수 없는 사용자 정의 구조를 사용합니다. PHP는 현재 이 작업을 수행하는 메커니즘(직렬화 없이)이 부족하므로 사용자 정의 구조를 사용하지 않는 객체만 공유할 수 있습니다.

일부 내부 개체는 사용자 지정 구조(예: parallel\Events\Event)를 사용하지 않으므로 공유될 수 있습니다.

클로저는 특별한 종류의 내부 객체이며 값으로 복사되는 것을 지원하므로 공유될 수 있습니다.

채널은 병렬 코드 작성의 중심이며 필요에 따라 동시 액세스 및 실행을 지원하므로 공유될 수 있습니다.

경고 내부 클래스를 확장하는 사용자 클래스는 내부 클래스에서 정의한 대로 사용자 정의 구조를 사용할 수 있으며, 이 경우 값으로 안전하게 복사할 수 없으므로 공유할 수 없습니다.


반환 값

경고 작업에 return 또는 throw 문이 포함된 경우 return parallel\Future를 무시해서는 안 됩니다.


예외

경고 parallel\Runtime이 닫힌 경우 parallel\Runtime\Error\Closed를 throw합니다.

경고 task이 내부 함수에서 생성된 클로저인 경우 parallel\Runtime\Error\IllegalFunction을 throw합니다.

경고 task에 잘못된 명령이 포함된 경우 parallel\Runtime\Error\IllegalInstruction을 throw합니다.

경고 task이 허용하거나 argv에 잘못된 변수가 포함된 경우 parallel\Runtime\Error\IllegalParameter를 throw합니다.

경고 task이 불법적으로 반환되면 parallel\Runtime\Error\IllegalReturn을 발생시킵니다.