├── .valgrindrc ├── src ├── Strand.php ├── Exception │ ├── Error.php │ ├── StatusError.php │ ├── Throwable.php │ ├── ForkException.php │ ├── MutexException.php │ ├── Exception.php │ ├── ProcessException.php │ ├── SerializationException.php │ ├── SynchronizationError.php │ ├── ThreadException.php │ ├── SemaphoreException.php │ ├── LockAlreadyReleasedError.php │ ├── SharedMemoryException.php │ ├── ChannelException.php │ ├── WorkerException.php │ ├── PanicError.php │ └── TaskException.php ├── Worker │ ├── WorkerFactory.php │ ├── WorkerProcess.php │ ├── WorkerFork.php │ ├── WorkerThread.php │ ├── Task.php │ ├── DefaultWorkerFactory.php │ ├── Environment.php │ ├── Internal │ │ ├── TaskFailure.php │ │ ├── TaskRunner.php │ │ └── PooledWorker.php │ ├── Worker.php │ ├── Pool.php │ ├── functions.php │ ├── AbstractWorker.php │ ├── BasicEnvironment.php │ └── DefaultPool.php ├── Process.php ├── Sync │ ├── Internal │ │ ├── ExitStatus.php │ │ ├── ExitSuccess.php │ │ └── ExitFailure.php │ ├── Mutex.php │ ├── Synchronizable.php │ ├── Parcel.php │ ├── Semaphore.php │ ├── Channel.php │ ├── Lock.php │ ├── FileMutex.php │ ├── ChannelledStream.php │ ├── PosixSemaphore.php │ └── SharedMemoryParcel.php ├── Context.php ├── Threading │ ├── Internal │ │ ├── Storage.php │ │ ├── Mutex.php │ │ ├── Semaphore.php │ │ └── Thread.php │ ├── Mutex.php │ ├── Semaphore.php │ ├── Parcel.php │ └── Thread.php ├── Process │ ├── ChannelledProcess.php │ └── Process.php └── Forking │ └── Fork.php ├── CONTRIBUTING.md ├── Vagrantfile ├── phpdoc.dist.xml ├── examples ├── worker.php ├── BlockingTask.php ├── fork.php ├── thread.php └── worker-pool.php ├── LICENSE ├── composer.json ├── bin └── worker.php ├── README.md └── CHANGELOG.md /.valgrindrc: -------------------------------------------------------------------------------- 1 | --error-limit=no 2 | --trace-children=yes 3 | --track-fds=yes 4 | --undef-value-errors=no 5 | -------------------------------------------------------------------------------- /src/Strand.php: -------------------------------------------------------------------------------- 1 | result = $result; 14 | } 15 | 16 | /** 17 | * {@inheritdoc} 18 | */ 19 | public function getResult() 20 | { 21 | return $this->result; 22 | } 23 | } -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure(2) do |config| 2 | config.vm.box = "rasmus/php7dev" 3 | 4 | config.vm.provision "shell", inline: <<-SHELL 5 | newphp 7 zts 6 | 7 | # Install pthreads from master 8 | git clone https://github.com/krakjoe/pthreads 9 | cd pthreads 10 | git checkout master 11 | phpize 12 | ./configure 13 | make 14 | sudo make install 15 | echo 'extension=pthreads.so' >> `php -i | grep php-cli.ini | awk '{print $5}'` 16 | SHELL 17 | end 18 | -------------------------------------------------------------------------------- /src/Worker/WorkerFork.php: -------------------------------------------------------------------------------- 1 | run(); 17 | })); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Context.php: -------------------------------------------------------------------------------- 1 | run(); 17 | })); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Worker/Task.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | Icicle 4 | 5 | build/docs 6 | utf8 7 | 8 | 9 | build/docs 10 | 11 | 12 | warn 13 | 14 | build/log/docs/{DATE}.log 15 | 16 | 17 | 18 |