PHP Conference Japan 2024

Pool::submitTo

(PECL pthreads >= 2.0.0)

Pool::submitToОтправляет задачу конкретному воркеру для выполнения

Описание

public Pool::submitTo(int $worker, Threaded $task): int

Отправляет задачу указанному воркеру в пуле. Воркеры индексируются с 0 и будут существовать только в том случае, если пулу необходимо их создать (поскольку потоки создаются лениво).

Список параметров

worker

Воркер, в который нужно добавить задание, начиная с 0.

task

Задание для выполнения

Возвращаемые значения

Идентификатор воркера, принявшего задачу.

Примеры

Пример #1 Отправка задач конкретному воркеру

<?php
class Task extends Threaded {
public function
run() {
var_dump(Thread::getCurrentThreadID());
}
}

$pool = new Pool(2);

$pool->submit(new Task());

for (
$i = 0; $i < 5; ++$i) {
$pool->submitTo(0, new Task()); // добавление всех заданий первому воркеру
}

$pool->submitTo(1, new Task()); // не может добавить задачу второму воркеру, потому что его ещё не существует

$pool->shutdown();

Результат выполнения приведённого примера:

int(4475011072)
int(4475011072)
int(4475011072)
int(4475011072)
int(4475011072)
int(4475011072)

Fatal error: Uncaught Exception: The selected worker (1) does not exist in %s:%d

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top