Пространство кортежей

23.02.2021

Пространство кортежей (англ. tuple space) — реализация парадигмы ассоциативной памяти для параллельных/распределённых вычислений. Она предоставляет репозиторий кортежей с параллельным доступом. Например, можно представить группу процессоров, которые вычисляют данные и сохраняют их в пространство кортежей, и группу процессоров, которые ищут данные в пространстве по шаблону и используют их. Пространство кортежей можно рассматривать как разновидность распределённой памяти.

Пространства кортежей являются теоретической основой языка Linda.

Реализации пространств кортежей были разработаны для Java, Smalltalk, Ruby, TCL, Python, Lua, Лисп и Пролог.

Object spaces

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); } }