Пространство кортежей
Пространство кортежей (англ. tuple space) — реализация парадигмы ассоциативной памяти для параллельных/распределённых вычислений. Она предоставляет репозиторий кортежей с параллельным доступом. Например, можно представить группу процессоров, которые вычисляют данные и сохраняют их в пространство кортежей, и группу процессоров, которые ищут данные в пространстве по шаблону и используют их. Пространство кортежей можно рассматривать как разновидность распределённой памяти.
Пространства кортежей являются теоретической основой языка Linda.
Реализации пространств кортежей были разработаны для Java, Smalltalk, Ruby, TCL, Python, Lua, Лисп и Пролог.
JavaSpaces
JavaSpaces — служба, предоставляющая распределённый механизм обмена и координирования объектов Java. Она используется для сохранения состояния распределённой системы и реализации распределённых алгоритмов.
Пример использования
// An Entry class
public class SpaceEntry implements Entry
{
public final String message = "Hello World!";
public Integer count = 0;
public String service() {
count = count + 1;
return message;
}
public String toString() {
return "Count: " + count;
}
}
// Hello World! server
public class Server
{
public static void main(String[] args) throws Exception
{
SpaceEntry entry = new SpaceEntry(); // Create the Entry object
JavaSpace space = (JavaSpace)space(); // Create an Object Space
// Register and write the Entry into the Space
space.write(entry, null, Lease.FOREVER);
// Pause for 10 seconds and then retrieve the Entry and check its state.
Thread.sleep(10*1000);
SpaceEntry e = space.read(new SpaceEntry(), null, Long.MAX_VALUE);
System.out.println(e);
}
}
// Client
public class Client
{
public static void main(String[] args) throws Exception
{
JavaSpace space = (JavaSpace) space();
SpaceEntry e = space.take(new SpaceEntry(), null, Long.MAX_VALUE);
System.out.println(e.service());
space.write(e, null, Lease.FOREVER);
}
}
См. также
Ссылки
- "TupleSpace" на c2.com (англ.)
- "JavaSpace Specification" at jini.org