parallel parallel\run

(1.0.0)

parallel\run — Execution


설명

parallel\run(Closure $task): ?Future

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

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

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


자동 스케줄링

parallel\run()에 대한 이전 호출에 의해 내부적으로 생성되고 캐시된 \parallel\Runtime이 유휴 상태인 경우 작업을 실행하는 데 사용됩니다. \parallel\Runtime이 유휴 상태가 아니면 병렬이 \parallel\Runtime을 만들고 캐시합니다.

메모: 프로그래머가 만든 \parallel\Runtime 개체는 자동 스케줄링에 사용되지 않습니다.


매개변수

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

Task Characteristics

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

  • 참조로 수락 또는 반환
  • 내부 객체 수락 또는 반환(참고 참조)
  • 제한된 명령 집합을 실행

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

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

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

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


Arguments Characteristics

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

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

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


내부 개체 참고 사항

내부 객체는 일반적으로 값으로 안전하게 복사할 수 없는 사용자 정의 구조를 사용합니다. 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을 발생시킵니다.


기타