Вопрос:
Есть ли способ заставить библиотеку параллельных задач выполнять несколько задач одновременно? Даже если это означает, что весь процесс будет работать медленнее со всем добавленным переключением контекста на каждом ядре?
Предыстория:
Я новичок в многопоточности, поэтому мне может понадобиться помощь. Мое первоначальное исследование не дало многого, но я также сомневаюсь, что знаю, что именно искать. Возможно, кто-то более опытный в многопоточности поможет мне лучше понять TPL и/или найти лучшее решение.
Наша компания планирует установить программное обеспечение на всех компьютерах пользователей, которое будет подключаться к центральному серверу несколько раз в день и синхронизировать некоторые файлы и данные MS Access обратно на компьютер пользователя. Мы хотели бы сначала протестировать эту концепцию под нагрузкой и посмотреть, как БД Access выдерживает множество одновременных подключений.
Мне было поручено написать приложение .NET, которое ведет себя как клиентское приложение (подключение и синхронизация с сетевым расположением), но делает это одновременно в нескольких потоках.
Я знакомлюсь с библиотекой параллельных задач (TPL), так как это кажется лучшим (новейшим) способом обработки многопоточности и легкого получения возвращаемых значений из каждого потока. Однако, насколько я понимаю, TPL решает, как выполнять каждую «задачу» для максимально быстрого выполнения, распределяя работу между доступными ядрами. Итак, скажем, я хочу запустить 30 заданий синхронизации на двухъядерной машине... TPL будет запускать 15 заданий на каждом ядре последовательно. Это означало бы, что мой нагрузочный тест будет задействовать базу данных Access не более чем с двумя подключениями одновременно. Я хочу попасть в базу данных с большим количеством одновременных подключений.