I try to run the example. The second line of code workerToClient = parallel.pool.PollableDataQueue(Destination="any") gives me this error:
Error using parallel.pool.PollableDataQueue (line 28)
Too many input arguments.
I remove the Destination = "any" argument and that seems to get things working. But then I get to the for-loop in the example:
for idx = 1:5
send(clientToWorker, [idx rand]);
status = poll(workerToClient, inf)
end
and the computer locks up with no output. I force-quite (CTRL-C) and type
future.State
The result is 'finished'. It seems the process stopped and I never sent the stop message. Seems nothing I can do will keep the process running.

6 Kommentare

parallel.pool.PollableDataQueue(Destination="any")
has been supported only since R2025a.
Walter Roberson
Walter Roberson am 26 Nov. 2025
You did not post enough context for us to be sure that clientToWorker and workerToClient have been created in ways compatible with the default destination.
William
William am 26 Nov. 2025
Verschoben: Walter Roberson am 26 Nov. 2025
I see the matlab provided example did not attach to this question. My appoligies. I'll copy it here:
Typed into the matlab command window:
pool = parpool("Threads",1);
workerToClient = parallel.pool.PollableDataQueue(Destination="any"); % Except that I had to remove the Destination="any"
clientToWorker = parallel.pool.PollableDataQueue(Destination="any"); % to get the error messages to go away.
In a seperate (processData.m) file:
function out = processData(workerToClient,clientToWorker)
out = 0;
send(workerToClient,"Ready to receive data.");
while true
% Wait for a message
data = poll(clientToWorker,Inf);
if strcmp(data,"stop")
send(workerToClient,"Stopped processing data on worker.")
return
else
response = sprintf("Data %d received.",data(1));
send(workerToClient,response);
out = out+data(2);
pause(1);
end
end
end
Back to the command window:
future = parfeval(@processData,1,workerToClient,clientToWorker);
status = poll(workerToClient,inf)
for idx = 1:5
send(clientToWorker,[idx rand]);
status = poll(workerToClient,inf)
end
There's more code (to be typed at the command prompt) after this but matlab hangs at this point.
Walter Roberson
Walter Roberson am 26 Nov. 2025
That example is marked "Since R2025a". It is not expected to work in R2024b.
William
William am 28 Nov. 2025
Is there no way to do block a parallel process while it waits for data pre-2025a?
Walter Roberson
Walter Roberson am 28 Nov. 2025
You have to be careful about what you are polling, as there is no Destination="any"

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Startup and Shutdown finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2024b

Gefragt:

am 26 Nov. 2025

Kommentiert:

am 28 Nov. 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by