parallel/lib/Sync/Parcel.php

34 lines
1.1 KiB
PHP
Raw Normal View History

2016-12-29 19:16:04 -06:00
<?php
2016-08-18 11:04:48 -05:00
2016-08-23 16:47:40 -05:00
namespace Amp\Parallel\Sync;
/**
2015-12-04 23:50:32 -06:00
* A parcel object for sharing data across execution contexts.
*
2015-12-04 23:50:32 -06:00
* A parcel is an object that stores a value in a safe way that can be shared
* between different threads or processes. Different handles to the same parcel
* will access the same data, and a parcel handle itself is serializable and
* can be transported to other execution contexts.
*
2015-12-04 23:50:32 -06:00
* Wrapping and unwrapping values in the parcel are not atomic. To prevent race
* conditions and guarantee safety, you should use the provided synchronization
* methods to acquire a lock for exclusive access to the parcel first before
* accessing the contained value.
*/
2016-08-18 11:04:48 -05:00
interface Parcel extends Synchronizable {
/**
2015-12-04 23:50:32 -06:00
* Unwraps the parcel and returns the value inside the parcel.
*
2015-12-04 23:50:32 -06:00
* @return mixed The value inside the parcel.
*/
2015-12-04 23:50:32 -06:00
public function unwrap();
/**
2015-12-04 23:50:32 -06:00
* Clones the parcel object, resulting in a new, independent parcel.
*
2015-12-04 23:50:32 -06:00
* When a parcel is cloned, a new parcel is created and the original
* parcel's value is duplicated and copied to the new parcel.
*/
2015-12-04 23:50:32 -06:00
public function __clone();
}