порядок элементов в задаче.Фабрика.ContinueWhenAll

#c# #task-parallel-library

#c# #задача-параллельная-библиотека

Вопрос:

В Task.Factory.ContinueWhenAll(System.Threading.Tasks.Task[] tasks, Action<System.Threading.Tasks.Task[]> continuationAction) документации не указано, что порядок элементов в continuationAction will будет идентичным и соответствует порядку элементов во tasks входном параметре. Возможно ли доказать / опровергнуть это (помимо рассмотрения эмпирических результатов)?

Комментарии:

1. referencesource.microsoft.com/#mscorlib/system/threading/tasks/…

2. Документация может лгать или быстро устаревать. Исходный код может быть неправильно понят довольно легко из-за его сложности. Эксперименты могут подтвердить или опровергнуть ваш тезис. Кстати, да, это сохранит порядок.

3. @user80 Что именно вы ищете?

Ответ №1:

Это деталь реализации, которая может быть изменена. Что бы вы ни доказывали / опровергали, это будет зависеть от конкретной версии .Чистый и на определенном оборудовании. Нет гарантии, что порядок не изменится в будущем или даже на другой платформе. Если порядок не задокументирован, вы не должны предполагать его. Гораздо лучше убедиться, что вы можете идентифицировать свои задачи и сортировать их на основе этого идентификатора для ваших целей.

Комментарии:

1. Ник — это то, о чем я тоже подумал, поскольку порядок сортировки явно не указан в спецификации, лучше не полагаться на него. Спасибо.