/**
  * {@inheritdoc}
  *
  * The type of worker created depends on the extensions available. If multi-threading is enabled, a WorkerThread
  * will be created. If threads are not available, a WorkerFork will be created if forking is available, otherwise
  * a WorkerProcess will be created.
  */
 public function create() : Worker
 {
     if (Thread::enabled()) {
         return new WorkerThread();
     }
     if (Fork::enabled()) {
         return new WorkerFork();
     }
     return new WorkerProcess();
 }