MATLAB Answers

0

What is the difference between DataQueue and PollableDataQueue

Asked by Jim Hokanson on 6 Jan 2018
Latest activity Commented on by Jim Hokanson on 6 Jan 2018
What is the difference between parallel.pool.DataQueue and parallel.pool.PollableDataQueue. It seems the pollable queue is the same as the data queue but with the ability to directly extract the next queue item, rather than rely on a callback method. Are there other differences (functionally or with performance)? Is my understanding correct?

  0 Comments

Sign in to comment.

1 Answer

Answer by Walter Roberson
on 6 Jan 2018
 Accepted Answer

You can only afterEach on a non pollable queue. You can only check the queue size or poll a pollable queue. That said, I do not know why the two could not have been merged.
The documentation also says that:
"Unlike all other handle objects, PollableDataQueue instances do remain connected when they are sent to workers."
The practical implications of that do not come to mind.
Note by the way that the documentation on the two varieties of queue both say that the values are serialized and sent and deserialized, which answers points from your other question.

  1 Comment

Oops, I skimmed through the docs a bit too quickly! I guess the big issue is that poll() or afterEach() consumes the queue, so if one is engaged it isn't clear how the other would also get the same data. I'll have to change some of my initial (untested) code because I actually was using a queue first in poll mode and then switching to callback mode. A workaround for this should be fairly straightforward now that I'm aware it is an issue.
Regarding the "remain connected" documentation, which is present in both queues, I think that means that the same object is present in both processes (or they act as one). For the pollable queue I think this means you can ask the length in the sender or the receiver. Also, presumably deleting the queue in one process deletes the queue in the other ... (not tested)

Sign in to comment.