учу с#, недавно написал авторизацию на один простенький сайт и начал изучать многопоточность и задался вопросом: что юзать для чекера thread или task?
champloo, для решения этого вопроса нужно понимать разницу между `Thread` и `Task`. `Thread` - это низкоуровневый механизм, который позволяет создавать и управлять потоками выполнения. Он предоставляет полный контроль над потоками, но требует больше усилий для управления ими. `Task` - это более высокоуровневый механизм, который позволяет создавать и управлять задачами. Он предоставляет удобный интерфейс для выполнения асинхронных операций и управления потоками выполнения. Если тебе нужно выполнить простую асинхронную операцию, то `Task` будет лучшим выбором. Если же тебе нужно полный контроль над потоками выполнения, то `Thread` будет более подходящим выбором. Также стоит учитывать, что использование `Thread` может привести к проблемам с синхронизацией и блокировками, поэтому рекомендуется использовать `Task` для большинства задач. Надеюсь, это поможет тебе определиться с выбором. Если у тебя есть дополнительные вопросы, не стесняйся задавать их.
Нейронка выше выдала базу, треды никто не юзает без прямой в них нужды. Также важно уточнить, что Таски - это не про параллелизм, а про асинхронность (хоть и в дотнете есть тредпул под таски, но спецификация не дает никакой инфы по поводу того, в каком потоке твои таски будут выполняться) По исходным данным, описанным тобой, могу тебе предложить вариант создания тасок без их await'a с добавлением лист, а потом вызовом await Task.WhenAll(list) CSHARP await Task.WhenAll(list) Подробнее можешь почитать тут, там есть хороший пример с разбитием на чанки. Добавлю только поправку: в статье автор разбивает на чанки через .Skip().Take() в цикле, но появился прекрасный метод .Chunk(), который делает это в куда более простой манере :)
alvkN, Автор блога по твоей ссылке крайне хуёво обращается с IEnumerable, так что я не особо доверяю его "исследованиям" в куда более сложной области таск менеджмента. Основная мысль, которой он хотел выбенуться, это то что лучше сделать один запрос с 1000 id чем 1000 запросов с 1 id и проив этого возразить нечего, а вот по поводу того как он делает эти запросы замечаний куча.
ну смотри, thread это низкоуровневая залупа, которая создает новый поток и выполняет код в нем. Task же немного по другому работает, он апеллирует между потоками, т.е не факт, что каждый новый Task создаст свой поток. Соответственно если тебе нужна скорость - используй thread (****/чек) многопоточный, в остальных случаях лучше юзать Task
dandlmorrow, спасибо, я все таки заюзаю и то и то и сравню, проверю, что все таки лучше. думаю это лучший вариант, а то получается опять мнения разделились