If I have a process and in that process there are 4 flows, and in those 4 flows I have 4 different actions to download artifacts, but in the artifacts I specify the same agent to download them all, does it then wait for the agent to finish the download before then next artifact is downloaded?
nelje05 and took a look at the process in question, and the short answer is that an agent can act mutli-threaded when "require exclusive execution" is unchecked for server type.
That said, at first glance, it looks like your process of four simultaneous flows still executes one at a time, but upon inspecting the process more closely, we came to two conclusions:
(1) At least two flows are moving simultaneously, but at different speeds due only to the speed of the server they're running on (we have a screenshot if you need to see what I'm talking about).
(2) It looks like there is a limit to how many artifacts can be transferred to a single agent at once, likely a restriction placed by the artifact engine's regulation of artifact distribution.
So in other words, basically the agent is asking for these four artifacts at once, but ROC is telling it to cool its jets a bit and take maybe two a time instead. That is a limit that can't be (and probably shouldn't be) altered, since it's basically preventing what might otherwise result in some potential bandwidth problems.
The way it operates by design is really the most efficient, as distributing artifacts to a single agent simultaneously would have no real advantage in terms of bandwidth usage, would likely add a bit of marginal overhead, as well as other possible issues(race conditions depending on the overall hierarchy/design of the processes within deployments?). So the ROC seems to queue these requests if it is in fact the same agent from what we viewed. Was there a specific use case that this would benefit?
The only real use case is to shave a minute or two off a process.