diff --git a/reference/pthreads/book.xml b/reference/pthreads/book.xml index 908f6593b3..d49e0c758e 100644 --- a/reference/pthreads/book.xml +++ b/reference/pthreads/book.xml @@ -94,6 +94,7 @@ &reference.pthreads.worker; &reference.pthreads.stackable; &reference.pthreads.modifiers; + &reference.pthreads.pool; &reference.pthreads.mutex; &reference.pthreads.cond; @@ -118,4 +119,4 @@ End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 ---> \ No newline at end of file +--> diff --git a/reference/pthreads/pool.xml b/reference/pthreads/pool.xml index b8ce9866ff..a6b2708d78 100644 --- a/reference/pthreads/pool.xml +++ b/reference/pthreads/pool.xml @@ -1,7 +1,7 @@ - + + + + + Pool::__destruct + Destroys the Pool + + + + &reftitle.description; + + public voidPool::__destruct + + + + Shuts down all Workers, and collect all Stackables, finally destroys the Pool + + + + + &reftitle.returnvalues; + + void + + + + + diff --git a/reference/pthreads/pool/collect.xml b/reference/pthreads/pool/collect.xml new file mode 100644 index 0000000000..42c970d606 --- /dev/null +++ b/reference/pthreads/pool/collect.xml @@ -0,0 +1,149 @@ + + + + + + Pool::collect + Collect references to completed tasks + + + + &reftitle.description; + + public voidPool::collect + Callablecollector + + + Allows the Pool to collect references determined to be garbage by the given collector + + + + + &reftitle.parameters; + + + collector + + + A Callable collector + + + + + + + + &reftitle.returnvalues; + + void + + + + + &reftitle.examples; + + + Creating Pools + +complete = false; + } + + public function run() { + printf( + "Hello from %s in Thread #%lu\n", + __CLASS__, $this->worker->getThreadId()); + $this->complete = true; + } + + public function isComplete() { + return $this->complete; + } + + protected $complete; +} + +class MyWorker extends Worker { + + public function __construct(Something $something) { + $this->something = $something; + } + + public function run() { + /** ... **/ + } +} + +$pool = new Pool(8, \MyWorker::class, [new Something()]); +$pool->submit(new MyWork()); + +usleep(1000); + +$pool->collect(function($work){ + return $work->isComplete(); +}); +var_dump($pool); +?> +]]> + + &example.outputs; + + + int(8) + ["class":protected]=> + string(8) "MyWorker" + ["workers":protected]=> + array(1) { + [0]=> + object(MyWorker)#4 (1) { + ["something"]=> + object(Something)#5 (0) { + } + } + } + ["work":protected]=> + array(0) { + } + ["ctor":protected]=> + array(1) { + [0]=> + object(Something)#2 (0) { + } + } + ["last":protected]=> + int(1) +} +]]> + + + + + + + + diff --git a/reference/pthreads/pool/resize.xml b/reference/pthreads/pool/resize.xml new file mode 100644 index 0000000000..741e9927eb --- /dev/null +++ b/reference/pthreads/pool/resize.xml @@ -0,0 +1,62 @@ + + + + + + Pool::resize + Resize the Pool + + + + &reftitle.description; + + public voidPool::resize + integersize + + + Resize the Pool + + + + + &reftitle.parameters; + + + size + + + The maximum number of Workers this Pool can create + + + + + + + + &reftitle.returnvalues; + + void + + + + + diff --git a/reference/pthreads/pool/shutdown.xml b/reference/pthreads/pool/shutdown.xml new file mode 100644 index 0000000000..95f9daa882 --- /dev/null +++ b/reference/pthreads/pool/shutdown.xml @@ -0,0 +1,48 @@ + + + + + + Pool::shutdown + Shutdown all Workers + + + + &reftitle.description; + + public voidPool::shutdown + + + + Shutdown the Workers in this Pool + + + + + &reftitle.returnvalues; + + void + + + + + diff --git a/reference/pthreads/pool/submit.xml b/reference/pthreads/pool/submit.xml new file mode 100644 index 0000000000..b6702f6611 --- /dev/null +++ b/reference/pthreads/pool/submit.xml @@ -0,0 +1,139 @@ + + + + + + Pool::submit + Submits a Stackable for execution + + + + &reftitle.description; + + public intPool::submit + Stackabletask + + + Submit the task to the next Worker in the Pool + + + + + &reftitle.parameters; + + + size + + + The task for execution + + + + + + + + &reftitle.returnvalues; + + the length of the stack on the selected Worker + + + + + &reftitle.examples; + + + Submitting Tasks + +something = $something; + } + + public function run() { + /** ... **/ + } +} + +$pool = new Pool(8, \MyWorker::class, [new Something()]); +$pool->submit(new MyWork()); +var_dump($pool); +?> +]]> + + &example.outputs; + + + int(8) + ["class":protected]=> + string(8) "MyWorker" + ["workers":protected]=> + array(1) { + [0]=> + object(MyWorker)#4 (1) { + ["something"]=> + object(Something)#5 (0) { + } + } + } + ["work":protected]=> + array(1) { + [0]=> + object(MyWork)#3 (1) { + ["worker"]=> + object(MyWorker)#5 (1) { + ["something"]=> + object(Something)#6 (0) { + } + } + } + } + ["ctor":protected]=> + array(1) { + [0]=> + object(Something)#2 (0) { + } + } + ["last":protected]=> + int(1) +} +]]> + + + + + + + + diff --git a/reference/pthreads/thread/kill.xml b/reference/pthreads/thread/kill.xml new file mode 100644 index 0000000000..6d2cb4a83d --- /dev/null +++ b/reference/pthreads/thread/kill.xml @@ -0,0 +1,48 @@ + + + + + + Thread::kill + Execution + + + + &reftitle.description; + + final public voidThread::kill + + + + Kills the referenced thread, dangerously ! + + + + + &reftitle.returnvalues; + + void + + + + + diff --git a/reference/pthreads/versions.xml b/reference/pthreads/versions.xml index 18f0fbee3b..d88b6f5bb8 100644 --- a/reference/pthreads/versions.xml +++ b/reference/pthreads/versions.xml @@ -27,6 +27,7 @@ + @@ -43,6 +44,7 @@ + @@ -100,4 +102,4 @@ End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 ---> \ No newline at end of file +--> diff --git a/reference/pthreads/worker/kill.xml b/reference/pthreads/worker/kill.xml new file mode 100644 index 0000000000..610e9059d3 --- /dev/null +++ b/reference/pthreads/worker/kill.xml @@ -0,0 +1,53 @@ + + + + + + Worker::kill + Execution + + + + &reftitle.description; + + final public voidWorker::kill + + + + Kills the referenced Worker, dangerously ! + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + void + + + + +