1
0
mirror of https://github.com/danog/parallel.git synced 2024-11-27 04:44:56 +01:00
Go to file
2017-11-20 19:21:53 +01:00
bin Move ExitResult classes out of Internal namespace 2017-07-28 17:34:24 -05:00
examples Improve worker-pool example (#30) 2017-11-20 19:21:53 +01:00
lib Quiet style fixer 2017-11-10 11:35:47 -06:00
test Quiet style fixer 2017-11-10 11:35:47 -06:00
travis Fix permissions 2017-05-18 17:21:52 -05:00
.gitattributes example → examples 2017-06-16 00:04:10 -05:00
.gitignore Apply Amp's code style 2017-05-18 09:51:31 +02:00
.php_cs.dist Fix php-cs-fixer config 2017-06-17 18:23:28 +02:00
.travis.yml Use pthreads only on 7.2 2017-07-20 23:32:58 -05:00
.valgrindrc Add helpful defaults for Valgrind 2015-08-27 12:33:19 -05:00
composer.json Fix typo in autoload-dev to load required class 2017-06-26 20:14:17 +02:00
CONTRIBUTING.md Port to Amp 2016-08-18 11:04:48 -05:00
LICENSE Update license 2015-09-14 21:28:25 -05:00
Makefile Apply Amp's code style 2017-05-18 09:51:31 +02:00
phpdoc.dist.xml Port to Amp 2016-08-18 11:04:48 -05:00
phpunit.xml.dist Update to PHPUnit 6 and use helper package 2017-03-21 23:19:15 -05:00
README.md Update README.md 2017-07-17 22:59:56 -05:00
Vagrantfile Update vagrant box for PHP 7 2016-01-23 10:50:56 -06:00

Parallel Processing for Amp

Build Status Coverage Status Stable License

True parallel processing using native threading and multiprocessing for parallelizing code, without blocking.

This library is a component for Amp that provides native threading, multiprocessing, process synchronization, shared memory, and task workers. Like other Amp components, this library uses Coroutines built from Promises and Generators to make writing asynchronous code more like writing synchronous code.

This library provides a means of parallelizing code without littering your application with complicated lock checking and inter-process communication.

To be as flexible as possible, this library comes with a collection of non-blocking concurrency tools that can be used independently as needed, as well as an "opinionated" worker API that allows you to assign units of work to a pool of worker threads or processes.

Requirements
  • PHP 7 (no extensions required)
Suggested
  • pthreads extension: Best extension option for concurrency in PHP, but it requires PHP to be compiled with --enable-maintainer-zts to enable thread-safety.
  • pcntl extension: Enables forking concurrency method.
  • sysvmsg extension: Required for sharing memory between forks or processes.
Installation

The recommended way to install is with the Composer package manager. (See the Composer installation guide for information on installing and using Composer.)

Run the following command to use this package in your project:

composer require amphp/parallel

You can also manually edit composer.json to add this library as a project requirement.

// composer.json
{
    "require": {
        "amphp/parallel": "^0.1"
    }
}

Development and Contributing

Want to hack on the source? A Vagrant box is provided with the repository to give a common development environment for running concurrent threads and processes, and comes with a bunch of handy tools and scripts for testing and experimentation.

Starting up and logging into the virtual machine is as simple as

vagrant up && vagrant ssh

Once inside the VM, you can install PHP extensions with Pickle, switch versions with newphp VERSION, and test for memory leaks with Valgrind.