Du brauchst zunächst eine Klasse, die eine Datei (incl. Name) im Speicher halten kann:
Delphi-Quellcode:
TMemFile=class(TObject)
public
filename:string;
MemoryStream:TMemoryStream;
end;
Thread A erzeugt pro Datei ein Objekt dieser Klasse und lädt die Datei in den Memorystream.
Dann schiebt der Thread A das Objekt in die Queue Q.
Diese Queue muss threadsicher gemacht werden.
Thread B liest nun aus Q und manipuliert die Daten im Memorystream.
Anschliesend gibt er das übernommene TMemFile-Objekt frei.
Threads und Queues gehören einfach zusammen.
Somit gibt es keine Übergabe von Pointern über den Hauptspeicher.