There are four ways I can think of to use an object
resident in a foreign island (or object memory, or vat), in a
safe manner (no interrupting an object during a state change, and
no out-of-sync copies)
If the object is writable, you can:
1. PassByProxy: Get a proxy to the object, and send it messages
that execute in its local island, safely scheduled. E and
Croquet do this with FarRefs; Spoon does it with Others.
2. PassByReplica: Get a replica of the object. Messages sent to
it will be executed both locally and remotely. Croquet does
this
If the object is read-only, you can also:
3. PassBySerialization: Serialize the object into a stream of
instructions in a safe language, then read it in locally.
Since the copies are read only, they never get out-of-sync.
This is what any serializer does.
4. PassByCopy: If the islands are in the same format, one could
copy out the bytes, and resolve out-pointers at both ends.
This is what ImageSegments do. This would be much faster than
serialization, and can even be supported in hardware, by
doing a DMA between two memories in a distributed memory
computer (such as a Cell Broadband Engine)
5. PassByInstance: If the islands have access to shared memory,
one can use an object directly, executing messages for it
locally. Croquet does this for a few objects,
Which of these does Spoon use to copy objects between
memories/islands? I'm curious, especially in regard to
PassByCopy, since I'm working with the Cell BE in mind.
--
Matthew Fulmer --
http://mtfulmer.wordpress.com/_______________________________________________
Spoon mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/spoon