powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выборка из базы данных в несколько потоков
129 сообщений из 129, показаны все 6 страниц
Выборка из базы данных в несколько потоков
    #38080564
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу научится работать с многопточностью )
К примеру, в базе есть 300 записей. Я хочу запустить выборку по 100 записей в 3 потоках одновременно. Подскажите как действовать и что почитать.
Спасибо.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080619
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002,
300 записей получать в 3 потока это сурово....
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080628
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch300 записей получать в 3 потока это сурово....
да, пожалуй задачка для БД непосильная. надо бы увеличить количество потоков.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080631
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080652
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну хорошо, мне надо увеличить скорость выборки 30 000 000 записей, из сложной структуры соответственно 30 млн записей тянут за собой еще записии и сумарно получается под 100 150 млн записей. Так круче?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080653
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

Спасибо за ответ буду разбираться
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080680
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002,

можно посмотреть в сторону MARS (Multiple Active Recordsets).
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080683
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,

Спасибо я использую MultipleActiveResultSets=true
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080737
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ http://codearticles.ru/Home/ArticleView/1156

Какая прелесть!! муфаил, а если в десяти потоках нужно будет читать данные, то продолжать соpy-past еще на пару страниц?
PS выборка результатов будет последовательная

net 4.5


Создаешь нужный метод, который будет считывать данные, далее с помощью Paraller.ForAll или PLinq запускаешь их

a'la

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 public async Task<string> ReadAsync( int index)
{
    await   Task.Delay(index * 1000);
    return index.ToString();
 
}

//Test

   var strings= Emumarable.Range(0,3).AsParallel.Select( async i => ReadAsync(i));
   foreach( var s in strings)
   {
      Console.WriteLine(s);
   }
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080787
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,
без спорно, идея великолепная, но чел только только про потоки услышал а вы ему таски с паралелями, так можно лишить сознания пациента.
Я бы с начало дал ему попробовать утрамбовать "под 100 150 млн записей" в типизированный датасет, а потом глядя на динамику выздоровления - назначил бы потоки..
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080801
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиSeVa,
без спорно, идея великолепная, но чел только только про потоки услышал а вы ему таски с паралелями, так можно лишить сознания пациента.
Я бы с начало дал ему попробовать утрамбовать "под 100 150 млн записей" в типизированный датасет, а потом глядя на динамику выздоровления - назначил бы потоки..

А думал, что проще async\await. MS тужится, а создается полное впечатление, что про net 4.5 мало кто слышал.
Странная картина: c одной стороны облака, а с другой айтишники в глухих землянках отсиживаются без выхода в интернет
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080809
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaКакая прелесть!! муфаил, а если в десяти потоках нужно будет читать данные, то продолжать соpy-past еще на пару страниц?
Кухарочка, а если наступит новый год и дед мороз назовет тебя безупречным ламером, как в этом случае быть с потоками?

P.S. Кто-то недавно пищал про убогость тасков и воспевал говно-Rx. Кодеманка поменяла ориентацию? Шедеврально.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080817
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaКакая прелесть!! муфаил, а если в десяти потоках нужно будет читать данные, то продолжать соpy-past еще на пару страниц?
Кухарочка, а если наступит новый год и дед мороз назовет тебя безупречным ламером, как в этом случае быть с потоками?

P.S. Кто-то недавно пищал про убогость тасков и воспевал говно-Rx. Кодеманка поменяла ориентацию? Шедеврально.

Rx можно совсем травмировать.
code-monkey, расскажи по каким еще помойкам шаришься, выискивая такие объедки, которые запостил выше?

Да, посмотри лучше на свою ориентацию, сколько от тебя было вони про космические корабли, html5/js, а как выяснилось, ты их в глаза не видел и не собираешься. Чмо пустопорожнее
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080822
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rx не можно травмировать, а ты уже им травмирован. Причем, неизлечимо. Остальные высеры не имеют какой-либо ценности для темы, так что извини, опять ты обосрался.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080823
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002,

Если диск базы данных один
Тогда выборка в много потоков не даст никакого прироста производительности.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080836
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, SeVa
Учитесь:
Green2Если диск базы данных один
Тогда выборка в много потоков не даст никакого прироста производительности.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080839
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Green2,

Выборку делаю с мощного сервера а не с локального компьютора, поэтому у думаю про многопоточность
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080841
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, SeVa
Учитесь:
Green2Если диск базы данных один
Тогда выборка в много потоков не даст никакого прироста производительности.
Я теперь всегда использую два сидирома, что бы не плодить потоки.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080842
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002, это у Вас - СУБды, птички да слоники, у реальных пацанов базы на DVD-RW, и точка...
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080845
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002Green2,

Выборку делаю с мощного сервера а не с локального компьютора, поэтому у думаю про многопоточностьХорошо, тогда вопросы,
1. Что это за сервер, как у него организованы диски.
2. Какая база данных.

И самое главное, зачем вам схема в три потока?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080849
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Green2,
сервер- база данных , это абстракция, как он утроен нам без разницы, на сказевых или простых тем более.
единственное что аксиома, он может обслуживать одновременно большое количество участников.
этому критерию удовлетворяют все хранилища баз данных,
доступ к серверу, абстракция тем более, ибо это происходит через провайдеров которые реализуют интерфейс доступа.
Для всех типов баз он одинаковый, тюнинг не в счет.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080860
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Green21. Что это за сервер, как у него организованы диски.
2. Какая база данных.
эти вопросы актуальны если количество запросов в секунду чуть больше чем рыбы в речке.
а если 3 запроса в час - то реально не имеет значения какие винты.
Raid просто застрелится от скуки.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080935
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ, SeVa
Учитесь:
Green2Если диск базы данных один
Тогда выборка в много потоков не даст никакого прироста производительности.
Выполни мой пример. Не ленись.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080955
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
ну ты че, юмор потерял, ну просто я такую шузу а виде полумесяца забыл поставить()) после вертикальных двух точек..
код... не хочу, тем более я вчера опять экспериментировал с пиком баллмера..
я его смотрел так поверхностно секунд 5-6, там все понятно до ужаса, и решена проблема игольного ушка для доступа к базе..
код работоспособный и верный, толь ко вот я никак не могу понять зачем нам многоточечная загрузка, что ж так жалеть базу
что надо весь табун записей загонять на клиента и там его сортировать, с этим прекрасно справляются базы.
Запрос к базе должен быть точный и краткий, как апперкот - ответ такой же.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080971
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде-то в степиМСУ, SeVa
Учитесь:
пропущено...

Выполни мой пример. Не ленись.


Мудафаил щедро делится объедками web помоек. Налетай, пока не разобрали!!!
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080989
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМудафаил щедро делится объедками web помоек. Налетай, пока не разобрали!!!
Кухаркам невдомёк, что там вебом вообще не пахнет.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38080990
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиЗапрос к базе должен быть точный и краткий, как апперкот - ответ такой же.
+1
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081097
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaМудафаил щедро делится объедками web помоек. Налетай, пока не разобрали!!!
Кухаркам невдомёк, что там вебом вообще не пахнет.

У тебя всегда пахнет одним, теперь кроме собственного начал еще выкладывать из web помоек на русском.
Обычно, когда ты нагадишь сам на себя и чувствуешь себя в тепле, то начинаешь с удвоенной силой продолжать класть себе на голову.
Процесс так тебе нравится, что уже не остановить никому.

Модераторы, уберите клавиатуру у этой обезьянки.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081132
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

Кухаркам невдомёк, что там вебом вообще не пахнет.

У тебя всегда пахнет одним, теперь кроме собственного начал еще выкладывать из web помоек на русском.
Обычно, когда ты нагадишь сам на себя и чувствуешь себя в тепле, то начинаешь с удвоенной силой продолжать класть себе на голову.
Процесс так тебе нравится, что уже не остановить никому.

Модераторы, уберите клавиатуру у этой обезьянки.
Твоё унылое зловоние от собственной беспомощности со своим недо-SL разъедает твой тухлый мозг, когда моск поглощен, зловоние начинает пожирать твою кухарскую сущность изнутри, когда и там всё попачкано - начинаешься изгынать тонны слизи в форум.
Такой у тебя процесс и тебе это нравится. Ты очень занятная обезьяна.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081155
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Муфлон, у тебя кол-во слизи-сообщений в 10 раз больше моего.

ЗЫ А за меня не переживай, сейчас у меня проект никак не связан с SL. Он для меня не единственный, ты о себе лучше позаботься, скоро похоронят asp.net. Перейти на java ты сможешь только во сне.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081200
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМуфлон, у тебя кол-во слизи-сообщений в 10 раз больше моего.

ЗЫ А за меня не переживай, сейчас у меня проект никак не связан с SL. Он для меня не единственный, ты о себе лучше позаботься, скоро похоронят asp.net. Перейти на java ты сможешь только во сне.
Не пецди, тарахтушка. Твоя слизь в 10 раз насыщеней, полоумный склеротик. У тебя не могут быть новых проектов, тебя давно выбросили на свалку, так же как и сл. Про асп.нет не ссы, лет 20 задела на нем еще есть, первое десятилетие давно ак перевалило.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081301
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaМуфлон, у тебя кол-во слизи-сообщений в 10 раз больше моего.

ЗЫ А за меня не переживай, сейчас у меня проект никак не связан с SL. Он для меня не единственный, ты о себе лучше позаботься, скоро похоронят asp.net. Перейти на java ты сможешь только во сне.
Не пецди, тарахтушка. Твоя слизь в 10 раз насыщеней, полоумный склеротик. У тебя не могут быть новых проектов, тебя давно выбросили на свалку, так же как и сл. Про асп.нет не ссы, лет 20 задела на нем еще есть, первое десятилетие давно ак перевалило.

Пару лет еще протянет. Посмотри совсем недавний апдейт для asp.net, все идет к тому, что им скоро даже пахнуть не будет.
Будешь бутылки собирать.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081391
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему автор решил, что в 4 потока он извлечет данные из БД быстрее чем в 1 поток, я что то не понял?
При том если он будет работать с 1 массивом, то блокировки и т.д.
Вот если бы автор читал из разных источников данные, было бы другое дело.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081396
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileNewbie2002,

можно посмотреть в сторону MARS (Multiple Active Recordsets).Лучше посмотреть в сторону: "Каждой асинхронной операции своё соединение".
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081398
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Green2Newbie2002,

Если диск базы данных один
Тогда выборка в много потоков не даст никакого прироста производительности.Кэш данных СУБД? Или о каком диске идёт речь?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081417
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Я чуйкой понял что о DVD , что в переходах базами торгуют, один сидиром - один поток
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081451
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПару лет еще протянет. Посмотри совсем недавний апдейт для asp.net, все идет к тому, что им скоро даже пахнуть не будет.
Будешь бутылки собирать.
Пару десятков лет, ты хотел сказать. Посмотрел совсем недавний апдейт для asp.net и чё? Пока настенет время собирания бутылок на асп.нет, ты окончательно загнешься от недостатка перловой каши со своим унылым xaml, чудилко.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081470
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиАлексей К,
Я чуйкой понял что о DVD , что в переходах базами торгуют, один сидиром - один потокНу тогда ладно. :-)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081471
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaПару лет еще протянет. Посмотри совсем недавний апдейт для asp.net, все идет к тому, что им скоро даже пахнуть не будет.
Будешь бутылки собирать.
Пару десятков лет, ты хотел сказать. Посмотрел совсем недавний апдейт для asp.net и чё? Пока настенет время собирания бутылок на асп.нет, ты окончательно загнешься от недостатка перловой каши со своим унылым xaml, чудилко.

Муфлон, мне трогательны твои переживания, но они ни к чему. SL/WPF - это только две технологии из того, что я уже переживал. Я даже в резюме только последние 10 лет указываю и этого хватает за глаза. Я это делал и делаю постоянно и мне без разницы на чем. А ты только штаны в богадельне просиживал, да тупо конролы перетаскивал с единственным asp, который давно уже протух вместе с твоим мозжечком.

Чтобы понять скудность багажика твоих знаний достаточно зайти на твой говносайтец - codearticles.ru.
Это сборник рецептов дебила для дебилов


ЗЫ А что ты больше не вякаешь про "высокое быстродействие" html, "оптимизацию css" которой по сути нет?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081560
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМуфлон, мне трогательны твои переживания, но они ни к чему. SL/WPF - это только две технологии из того, что я уже переживал. Я даже в резюме только последние 10 лет указываю и этого хватает за глаза.
Только за наличие этих буков в этом безграмотном резюме стоит гнать тебя ссаным веником за шиворот из избы. Кому сейчас нужны такие кухарки? Ну разве что на миску риса, подметать избу вместе джуниорами? Тогда да, я тебя возьму в качестве расстрельного мяса, но не более.

SeVaЯ это делал и делаю постоянно и мне без разницы на чем. А ты только штаны в богадельне просиживал, да тупо конролы перетаскивал с единственным asp, который давно уже протух вместе с твоим мозжечком.
Что ты там постоянно делаешь, чудилко? Ты MVC от мембершипа отличить не можешь, дикарь бездарный. Иди букварём убей себя лучше, делает он что-то там. Бугага.

SeVaЧтобы понять скудность багажика твоих знаний достаточно зайти на твой говносайтец - codearticles.ru.
Это сборник рецептов дебила для дебилов
Тогда почему ты еще там не зарегистрировался?

SeVaЗЫ А что ты больше не вякаешь про "высокое быстродействие" html, "оптимизацию css" которой по сути нет?
По сути нет мозга в твоей унылой черепной коробке.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081610
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПару лет еще протянет. Посмотри совсем недавний апдейт для asp.net, все идет к тому, что им скоро даже пахнуть не будет.
И чё, php только останется?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081626
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уровню дискуссии в теме поражен.

Newbie2002Хочу научится работать с многопточностью )
К примеру, в базе есть 300 записей. Я хочу запустить выборку по 100 записей в 3 потоках одновременно. Подскажите как действовать и что почитать.
Спасибо.

Есть несколько вариантов работы с много поточностью.
Классическая многопоточность. Объявляем треды, в каждом треде делаем запрос....
Асинхронные рекордсеты/датасеты. Зачастую простое решения для сложной СУБД логики.
Paraller.For , PLinq - просто и красиво. Но - доступно только для 4 FW и применимо далеко не для всех задач


Имхо вам хочется изучить 1 вариант - и изучайте.
Для реальной работы пользы будет скорее минимум, но изучать можно.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081869
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvimУровню дискуссии в теме поражен.Это не дискуссия, это ср@ч.
dvimКлассическая многопоточность. Объявляем треды, в каждом треде делаем запрос....Не надо так делать.
dvimАсинхронные рекордсеты/датасеты.Это что? Нужен пример.
dvimЗачастую простое решения для сложной СУБД логики.Сложность логики в СУБД значения не имеет.
dvimParaller.For , PLinq - просто и красиво. Но - доступно только для 4 FW и применимо далеко не для всех задачParallel тут ни к чему. Тут к месту Task на базе Async Pattern.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081889
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КParallel тут ни к чему. Тут к месту Task на базе Async Pattern.
А по попе за параллель? :)

Код: c#
1.
2.
3.
4.
var list = ...;
list.Add("query1");
list.Add("query2");
list.AsParallel().ForAll(query => ExecuteQuery(query));
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38081907
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
имхо автор просто хочет поучиться работать с потоками.
Для этого белыми нитками привязывается задача (иначе бы она была описана по другому) .... такое бывает.
имхо потому автору следует разбираться с обычной потоковой моделью - делать что он хочет.
В клиенте СУБД-многопоточность нужна очень редко. У нас - зачитка огромного маcсива xls , и то это сервис....
Если есть долгоиграющие запросы - то разумно использовать совершенно другие механизмы.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082541
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002,

Я как разработчик бд должен напомнить:

Это имеет делать только если запрос можно разбить на N и распараллелить,
И делать это имеет смысл только через N соединений с бд.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082640
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не ребята, а вы точно в лесу все живете. Ни один не сказал про новую модель - асинхронность без много поточности, которая доступна в Net 4.5.

Эта история нужна везде: на клиенте для параллельных запросов, чтобы не было такой унылости как на web страницах, и на сервере, чтобы было скалирование
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082667
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaНе ребята, а вы точно в лесу все живете. Ни один не сказал про новую модель - асинхронность без много поточности, которая доступна в Net 4.5.

Эта история нужна везде: на клиенте для параллельных запросов, чтобы не было такой унылости как на web страницах, и на сервере, чтобы было скалирование

Безграмотная кухарка, async/await запускает задачу в фоновом потоке и при ее завершении выполняет код в основном потоке, в результате чего код выглядит почти как синхронный (включая обработку исключений).

Садись, двойка.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082677
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaНе ребята, а вы точно в лесу все живете. Ни один не сказал про новую модель - асинхронность без много поточности, которая доступна в Net 4.5.
знали бы разработчики 4.5 - как это у них получилось - асинхронность в 1м потоке - они бы сильно удивились.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082681
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очередной отжиг тупорылой кухарки, как забавно в очередной раз опускать Севу в помои
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082716
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa асинхронность без много поточности
на клиенте для параллельных запросов
согласен, но в await надо делать свой конект к базе ибо мы не проллезем через игольное ушко общего конекта..
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082758
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиSeVa асинхронность без много поточности
на клиенте для параллельных запросов
согласен, но в await надо делать свой конект к базе ибо мы не проллезем через игольное ушко общего конекта..

connect'ы тоже асинхронные и суть не в этом. Нет тупого блокирования потока, пока выполняется запрос или другая асинхронная операция, которая связана с I/O. За счет этого получается совсем другое кино
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082760
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erSeVaНе ребята, а вы точно в лесу все живете. Ни один не сказал про новую модель - асинхронность без много поточности, которая доступна в Net 4.5.
знали бы разработчики 4.5 - как это у них получилось - асинхронность в 1м потоке - они бы сильно удивились.
ну скорее это он утрировано сказал, ведь в этой модели мы не создаем потоки, не используем локи и инвоки, все за нас делает компилятор, а вот сам термин асинхронность совсем может не подразумевать псевдопотоки , это скорее всего отношение порядка действий, что вполне можно добиться легально на одном потоке ( диспетчер событий), а уж в свете вытесняемой многозадачности говорить бессмысленно,это моё имхо.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082772
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaНе ребята, а вы точно в лесу все живете. Ни один не сказал про новую модель - асинхронность без много поточности, которая доступна в Net 4.5.

Эта история нужна везде: на клиенте для параллельных запросов, чтобы не было такой унылости как на web страницах, и на сервере, чтобы было скалирование

Безграмотная кухарка, async/await запускает задачу в фоновом потоке и при ее завершении выполняет код в основном потоке, в результате чего код выглядит почти как синхронный (включая обработку исключений).

Садись, двойка.

Mудафаил, ты полный му**к и не стесняешься об этом всем рассказывать. Нет никаких фоновых потоков для async/await, а есть конечный автомат, который создает компилятор.

Чмо убогое, двойку тебе ставить не буду, для детсадовцев этого не делают
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082773
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaГде-то в степипропущено...

согласен, но в await надо делать свой конект к базе ибо мы не проллезем через игольное ушко общего конекта..

connect'ы тоже асинхронные и суть не в этом. Нет тупого блокирования потока, пока выполняется запрос или другая асинхронная операция, которая связана с I/O. За счет этого получается совсем другое кино
да бзн , нет ожидания as блокировок, пока не готов даже на эту тему вести беседу, на уровне кода все понятно.
но пока не разбирался с шаманством компилятора, в принципе я представляю что там может быть.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082776
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиbeg-in-erпропущено...

знали бы разработчики 4.5 - как это у них получилось - асинхронность в 1м потоке - они бы сильно удивились.
ну скорее это он утрировано сказал, ведь в этой модели мы не создаем потоки, не используем локи и инвоки, все за нас делает компилятор, а вот сам термин асинхронность совсем может не подразумевать псевдопотоки , это скорее всего отношение порядка действий, что вполне можно добиться легально на одном потоке ( диспетчер событий), а уж в свете вытесняемой многозадачности говорить бессмысленно,это моё имхо.

Асинхронность без много поточности в новой модели означает, что вызывающий поток не блокируется, а вся работа, если это возможно(метод имеет суффикс Async) перекладывается на операционку. В результате резко возрастает масштабируемость системы, которой раньше невозможно было добиться.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082783
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...


Безграмотная кухарка, async/await запускает задачу в фоновом потоке и при ее завершении выполняет код в основном потоке, в результате чего код выглядит почти как синхронный (включая обработку исключений).

Садись, двойка.

Mудафаил, ты полный му**к и не стесняешься об этом всем рассказывать. Нет никаких фоновых потоков для async/await, а есть конечный автомат, который создает компилятор.

Чмо убогое, двойку тебе ставить не буду, для детсадовцев этого не делают
читал в свое время Липпера, рад статей на эту тему, там действительно он рассказывает о этой фитче как о реализации конечных автоматов
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082784
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиSeVaпропущено...


connect'ы тоже асинхронные и суть не в этом. Нет тупого блокирования потока, пока выполняется запрос или другая асинхронная операция, которая связана с I/O. За счет этого получается совсем другое кино
да бзн , нет ожидания as блокировок, пока не готов даже на эту тему вести беседу, на уровне кода все понятно.
но пока не разбирался с шаманством компилятора, в принципе я представляю что там может быть.

Ничего особо сложного
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082793
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaАсинхронность без много поточности в новой модели означает, что вызывающий поток не блокируется,
ну в begininvike он ка бы тоже не блокируется а идет дальше ( это я так для порядка)
просто интересно где он берет стек куда складывает барахло при разрыве планировщиком, как бы два таких стека в одном потоке на могут быть, он по идее должен весь диспетчер автоматов тужа ложить.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082801
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чето я тупанул про стек, вполне легально ложится в один.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082806
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиЧето я тупанул про стек, вполне легально ложится в один.

Для этого предназначен SynchronizationContext , но если есть возможность лучше его не использовать, тк может быть существенным тормозом
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082808
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,
если оно завязано на уровне ядра - остроумное решение, завтра попробую разобраться.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082809
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тормоза вполне объяснимы
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082876
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КParallel тут ни к чему. Тут к месту Task на базе Async Pattern.
А по попе за параллель? :)

Код: c#
1.
2.
3.
4.
var list = ...;
list.Add("query1");
list.Add("query2");
list.AsParallel().ForAll(query => ExecuteQuery(query));

У нас запрос к БД. Выделять поток из пула на ожидание I/O глупо.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
// запуск с ожиданием "всех"
var results = Enumerable
    .Range(0, 200)
    .Select(v => ExecuteQuery(v).Result)
    .ToArray();

// Готово

.........

// запуск с событием завершения "всех"
var tasks = Enumerable
    .Range(0, 200)
    .Select(v => ExecuteQuery(v))
    .ToArray();

TaskFactory.ContinueWhenAll(tasks, tt => /* Готово */);

.........

Task<MyData> ExecuteQuery(int v)
{
    ...
    return Task.Factory.FromAsync(...);
}
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082877
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvimВ клиенте СУБД-многопоточность нужна очень редко.Нет. Запуск запросов к серверу (БД, веб-сервис и т. п.) в UI-потоке в наше время считается плохим тоном.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082878
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка

Алексей К
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
// запуск с ожиданием "всех"
var results = Enumerable
    .Range(0, 200)
    .Select(v => ExecuteQuery(v))
    .ToArray()
    .Select(v => v.Result)
    .ToArray();

// Готово
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082887
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er, они ввели прерывания в основной поток и обрабатывают 2 поток через прерывания :))

(это была такая щутка)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082913
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КОшибка

Алексей К
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
// запуск с ожиданием "всех"
var results = Enumerable
    .Range(0, 200)
    .Select(v => ExecuteQuery(v))
    .ToArray()
    .Select(v => v.Result)
    .ToArray();

// Готово




автор
Monitoring the IAsyncResult’s WaitHandle (as returned from its AsyncWaitHandle property) has a few implications. First, since the APM pattern is all about asynchrony, most IAsyncResult implementations strive to avoid allocating the WaitHandle, only doing so lazily if it’s actually requested. Thus, by accessing the IAsyncResult’s AsyncWaitHandle property, FromAsync is likely forcing allocation of a WaitHandle (and the associated operating system primitives) that otherwise wouldn’t need to be allocated. Second, the only way to “monitor” a WaitHandle to know when it’s been set is to wait on it, which is a potentially blocking operation. Obviously, FromAsync isn’t going to block the current thread by waiting on this handle (that wouldn’t be very async of it), so instead it relies on the ThreadPool. It could queue a work item to block on the handle, but that would end up burning a ThreadPool thread for each such call. Instead, FromAsync relies on ThreadPool.RegisterWaitForSingleObject, a function that is specifically geared towards using the ThreadPool to more efficiently wait for handles. According to the MSDN documentation, it does so by waiting on multiple handles from a single thread via WaitForMultipleObjects; however, there are a limit to how many handles it can wait on from each thread, so while this will end up burning fewer threads than if we blocked one thread per handle, it’s still far from ideal.



async\await не будет ничего блокировать при вызовах асинхронных вариантов методов для БД
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082924
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38082989
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...


Безграмотная кухарка, async/await запускает задачу в фоновом потоке и при ее завершении выполняет код в основном потоке, в результате чего код выглядит почти как синхронный (включая обработку исключений).

Садись, двойка.

Mудафаил, ты полный му**к и не стесняешься об этом всем рассказывать. Нет никаких фоновых потоков для async/await, а есть конечный автомат, который создает компилятор.

Чмо убогое, двойку тебе ставить не буду, для детсадовцев этого не делают
Кухарка, ты тупая курица без грамма серого вещества в черепной коробке, конечный автомат у тебя в унылой физиономии, а не в компиляторе. Иди разбей свой лоб об буквари, async/await создает отдельный поток.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083274
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaАлексей КОшибка

пропущено...



авторMonitoring the IAsyncResult’s WaitHandle (as returned from its AsyncWaitHandle property) has a few implications. First, since the APM pattern is all about asynchrony, most IAsyncResult implementations strive to avoid allocating the WaitHandle, only doing so lazily if it’s actually requested. Thus, by accessing the IAsyncResult’s AsyncWaitHandle property, FromAsync is likely forcing allocation of a WaitHandle (and the associated operating system primitives) that otherwise wouldn’t need to be allocated. Second, the only way to “monitor” a WaitHandle to know when it’s been set is to wait on it, which is a potentially blocking operation. Obviously, FromAsync isn’t going to block the current thread by waiting on this handle (that wouldn’t be very async of it), so instead it relies on the ThreadPool. It could queue a work item to block on the handle, but that would end up burning a ThreadPool thread for each such call. Instead, FromAsync relies on ThreadPool.RegisterWaitForSingleObject, a function that is specifically geared towards using the ThreadPool to more efficiently wait for handles. According to the MSDN documentation, it does so by waiting on multiple handles from a single thread via WaitForMultipleObjects; however, there are a limit to how many handles it can wait on from each thread, so while this will end up burning fewer threads than if we blocked one thread per handle, it’s still far from ideal.



async\await не будет ничего блокировать при вызовах асинхронных вариантов методов для БДЧитай внимательнее. Там рядом пример через ContinueWhenAll , без выделения потока на ожидание. Чтобы добиться такого результата необязательно использовать async/await. Достаточно 4-го фреймворка.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083314
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaпропущено...


Mудафаил, ты полный му**к и не стесняешься об этом всем рассказывать. Нет никаких фоновых потоков для async/await, а есть конечный автомат, который создает компилятор.

Чмо убогое, двойку тебе ставить не буду, для детсадовцев этого не делают
Кухарка, ты тупая курица без грамма серого вещества в черепной коробке, конечный автомат у тебя в унылой физиономии, а не в компиляторе. Иди разбей свой лоб об буквари, async/await создает отдельный поток.

Вот и Гнидка пожаловала с очередной порцией слизи. Нашел фоновые потоки для тасков? Извратность твоих хаотичных мыслишек в впереди планеты всей. Кроме тебя мало бы кто до этого додумался
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083332
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaпропущено...



пропущено...



async\await не будет ничего блокировать при вызовах асинхронных вариантов методов для БДЧитай внимательнее. Там рядом пример через ContinueWhenAll , без выделения потока на ожидание. Чтобы добиться такого результата необязательно использовать async/await. Достаточно 4-го фреймворка.

автор FromAsync relies on ThreadPool.RegisterWaitForSingleObject , a function that is specifically geared towards using the ThreadPool to more efficiently wait for handles. According to the MSDN documentation, it does so by waiting on multiple handles from a single thread via WaitForMultipleObjects; however, there are a limit to how many handles it can wait on from each thread, so while this will end up burning fewer threads than if we blocked one thread per handle, it’s still far from ideal.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083333
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

Кухарка, ты тупая курица без грамма серого вещества в черепной коробке, конечный автомат у тебя в унылой физиономии, а не в компиляторе. Иди разбей свой лоб об буквари, async/await создает отдельный поток.

Вот и Гнидка пожаловала с очередной порцией слизи. Нашел фоновые потоки для тасков? Извратность твоих хаотичных мыслишек в впереди планеты всей. Кроме тебя мало бы кто до этого додумался
Твоему гнустному умишке с гнилыми потрохами мозгов я подготовил примерчик для первоклашек. Осилишь?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class Program
{
    static void Main(string[] args)
    {
        FooAsync().Wait();
        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
        Console.Read();
    }

    private async static Task FooAsync() 
    {
        await Task.Delay(1000);
        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
    }
}



Что скажешь, марамойка, почему я получу разные идентификаторы тредов?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083350
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaавтор FromAsync relies on ThreadPool.RegisterWaitForSingleObject , a function that is specifically geared towards using the ThreadPool to more efficiently wait for handles. According to the MSDN documentation, it does so by waiting on multiple handles from a single thread via WaitForMultipleObjects; however, there are a limit to how many handles it can wait on from each thread, so while this will end up burning fewer threads than if we blocked one thread per handle, it’s still far from ideal.
Который из них? Их там около десятка.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083361
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaГде там ThreadPool.RegisterWaitForSingleObject ?

Из рефлектора:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
internal static Task<TResult> FromAsyncImpl(Func<AsyncCallback, object, IAsyncResult> beginMethod, Func<IAsyncResult, TResult> endMethod, object state, TaskCreationOptions creationOptions)
{
    AsyncCallback callback = null;
    if (beginMethod == null)
    {
        throw new ArgumentNullException("beginMethod");
    }
    if (endMethod == null)
    {
        throw new ArgumentNullException("endMethod");
    }
    TaskFactory.CheckFromAsyncOptions(creationOptions, true);
    TaskCompletionSource<TResult> tcs = new TaskCompletionSource<TResult>(state, creationOptions);
    try
    {
        if (callback == null)
        {
            callback = delegate (IAsyncResult iar) {
                TaskFactory<TResult>.FromAsyncCoreLogic(iar, endMethod, tcs);
            };
        }
        beginMethod(callback, state);
    }
    catch
    {
        tcs.TrySetResult(default(TResult));
        throw;
    }
    return tcs.Task;
}

private static void FromAsyncCoreLogic(IAsyncResult iar, Func<IAsyncResult, TResult> endMethod, TaskCompletionSource<TResult> tcs)
{
    Exception exception = null;
    OperationCanceledException exception2 = null;
    TResult result = default(TResult);
    try
    {
        result = endMethod(iar);
    }
    catch (OperationCanceledException exception3)
    {
        exception2 = exception3;
    }
    catch (Exception exception4)
    {
        exception = exception4;
    }
    finally
    {
        if (exception2 != null)
        {
            tcs.TrySetCanceled();
        }
        else if (exception != null)
        {
            if (tcs.TrySetException(exception) && (exception is ThreadAbortException))
            {
                tcs.Task.m_contingentProperties.m_exceptionsHolder.MarkAsHandled(false);
            }
        }
        else
        {
            tcs.TrySetResult(result);
        }
    }
}
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083379
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лёня, задам те вопрос как человеку, недавно вышедшему из отпуска со свежей, как говорится, головой на плечах :)

Не кажется ли, что тарахтушка Сева опять обделалась?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083386
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
столько поноса в 1 теме из за какой то много-поточности, для которой в dotNet есть 100500 классов, начиная от Thread и заканчивая самыми изощренными... ЗАЧЕМ?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083391
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЛёня, задам те вопрос как человеку, недавно вышедшему из отпуска со свежей, как говорится, головой на плечах :)

Не кажется ли, что тарахтушка Сева опять обделалась? "Трудно быть вежливым если ты прав" (с)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083395
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes, если МСУ и SeVa в одном топике пишут, то последний превращается в срач автоматически. Забей
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083532
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУЛёня, задам те вопрос как человеку, недавно вышедшему из отпуска со свежей, как говорится, головой на плечах :)

Не кажется ли, что тарахтушка Сева опять обделалась? "Трудно быть вежливым если ты прав" (с)

Вежливый ты мой. Ты не там копаешь.

Теперь посмотри на TaskFactory.ContinueWhenAll(tasks, tt => /* Готово */) в своем коде.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083564
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сева опять обкакалсяМСУSeVaпропущено...


Вот и Гнидка пожаловала с очередной порцией слизи. Нашел фоновые потоки для тасков? Извратность твоих хаотичных мыслишек в впереди планеты всей. Кроме тебя мало бы кто до этого додумался

Твоему гнустному умишке с гнилыми потрохами мозгов я подготовил примерчик для первоклашек. Осилишь?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class Program
{
    static void Main(string[] args)
    {
        FooAsync().Wait();
        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
        Console.Read();
    }

    private async static Task FooAsync() 
    {
        await Task.Delay(1000);
        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
    }
}



Что скажешь, марамойка, почему я получу разные идентификаторы тредов?
SeVa, марамойка ты наша форумная, есть что сказать по поводу "извратности моих хаотичных мыслишек"? Опять опкакалсо, неуч? :)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083613
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ+
Сева опять обкакалсяМСУпропущено...

Твоему гнустному умишке с гнилыми потрохами мозгов я подготовил примерчик для первоклашек. Осилишь?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class Program
{
    static void Main(string[] args)
    {
        FooAsync().Wait();
        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
        Console.Read();
    }

    private async static Task FooAsync() 
    {
        await Task.Delay(1000);
        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
    }
}



Что скажешь, марамойка, почему я получу разные идентификаторы тредов?

SeVa, марамойка ты наша форумная, есть что сказать по поводу "извратности моих хаотичных мыслишек"? Опять опкакалсо, неуч? :)

Глупая, бездумная обезьянка, а что доказывает твой тупой тест ни о чем?
Продолжаешь гадить себе на голову?
Попроси взрослых написать правильный тест.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083616
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaТеперь посмотри на TaskFactory.ContinueWhenAll(tasks, tt => /* Готово */) в своем коде.До этого речь шла про FromAsync . Ты уж определись. А то так и будем весь System.Threading.Task сюда из рефлектора постить. Впрочем - давай. Теперь твоя очередь. :-)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083639
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУ++
Сева опять обкакалсяпропущено...

SeVa, марамойка ты наша форумная, есть что сказать по поводу "извратности моих хаотичных мыслишек"? Опять опкакалсо, неуч? :)

Глупая, бездумная обезьянка, а что доказывает твой тупой тест ни о чем?
Продолжаешь гадить себе на голову?
Попроси взрослых написать правильный тест.
Этот тест в очередной раз доказывает, что ты унылая кодо-кухарка со всяческим отсутствием интеллекта. Заруби себе топором на своем тупорылом мозге, асинк авэйт - это синтаксический сахар, не более того. Очень замороченный в реализации, но таки сахар, который поет свои песни в отдельном потоке, играя на бубенцах мелодичные ритмы для так простофиль и обормотов-двоешников типа тебя.
Сегодня опять двойка, вон из класса.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083691
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ асинк авэйт - это синтаксический сахар, не более того. Очень замороченный в реализации, но таки сахар, который поет свои песни в отдельном потоке

но люди читают это и видят совершенно другое. автор http://msdn.microsoft.com/ru-ru/magazine/hh456403.aspx
асинхронные методы не планируют новые потоки — они позволяют выполнять вычисления в существующих потоках;
как тут не получить разрыв шаблона.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083712
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erкак тут не получить разрыв шаблона.Достаточно знать про ThreadPool.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083722
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaТеперь посмотри на TaskFactory.ContinueWhenAll(tasks, tt => /* Готово */) в своем коде.До этого речь шла про FromAsync . Ты уж определись. А то так и будем весь System.Threading.Task сюда из рефлектора постить. Впрочем - давай. Теперь твоя очередь. :-)

Реализации FromAsync я и без тебя видел, они были еще в Rx задолго до тасков.
Речь идет о том, что async\await - конечный автомат, который не блокирует поток, как это делается в Wait'ax для тасков или Thread'ax.
Это совсем новая модель и совсем другое кино.

Вот правильный вариант теста, который постил наш дебиленок.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 static void Main(string[] args)
        {
            Console.WriteLine("Main before {0}",Thread.CurrentThread.ManagedThreadId);
            FooAsync().Wait();
            Console.WriteLine("Main after {0}", Thread.CurrentThread.ManagedThreadId);
            Console.Read();
        }

        private async static Task FooAsync()
        {
            Console.WriteLine("Foo before {0}", Thread.CurrentThread.ManagedThreadId);
            await Task.Delay(1000);
            Console.WriteLine("Foo after {0}", Thread.CurrentThread.ManagedThreadId);
        }


Results
Код: c#
1.
2.
3.
4.
Main before 8
Foo before 8
Foo after 10
Main after 8



Те первый wait в Main блокирующий и выполнение идет в одном потоке, а c await Этого не происходит
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083728
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erМСУ асинк авэйт - это синтаксический сахар, не более того. Очень замороченный в реализации, но таки сахар, который поет свои песни в отдельном потоке

но люди читают это и видят совершенно другое. автор http://msdn.microsoft.com/ru-ru/magazine/hh456403.aspx
асинхронные методы не планируют новые потоки — они позволяют выполнять вычисления в существующих потоках;
как тут не получить разрыв шаблона.

beg-in-er, не трать время зря, если этому му**ку что-то втемяшилось, то это уже не вышибить.
Он любит гадить себе на голову, при этом считает, что выглядит очень красиво и умно
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083734
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erкак тут не получить разрыв шаблона.

...Другие контексты планирования являются многопоточными; в частности, стандартный пул потоков представлен одним контекстом планирования. Когда в нем планируется новая работа, она может быть выполнена в любом потоке из пула. Таким образом, асинхронный метод, начавший работать в пуле потоков, там же ее и продолжит, хотя при этом не исключена его «переброска» между разными потоками.

...На практике единой концепции для контекста планирования нет. Грубо говоря, SynchronizationContext потока действует как его контекст планирования. Поэтому, если у потока есть один из SynchronizationContext (существующая концепция, которая может быть реализована пользователем), он и будет использоваться. А если нет, тогда применяется TaskScheduler потока (аналогичная концепция, введенная TPL). Если у него нет ни того, ни другого, будет задействован TaskScheduler по умолчанию — он планирует возобновления в стандартном пуле потоков.

Но всё это теория от "менеджера программ в группе Microsoft C# and Visual Basic Language", которому наскоряк набили текст такие двоешники как Сева. Всегда поднимается новый поток, это наглядно иллюстрирует мой код.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083742
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУbeg-in-erкак тут не получить разрыв шаблона.

...Другие контексты планирования являются многопоточными; в частности, стандартный пул потоков представлен одним контекстом планирования. Когда в нем планируется новая работа, она может быть выполнена в любом потоке из пула. Таким образом, асинхронный метод, начавший работать в пуле потоков, там же ее и продолжит, хотя при этом не исключена его «переброска» между разными потоками.

...На практике единой концепции для контекста планирования нет. Грубо говоря, SynchronizationContext потока действует как его контекст планирования. Поэтому, если у потока есть один из SynchronizationContext (существующая концепция, которая может быть реализована пользователем), он и будет использоваться. А если нет, тогда применяется TaskScheduler потока (аналогичная концепция, введенная TPL). Если у него нет ни того, ни другого, будет задействован TaskScheduler по умолчанию — он планирует возобновления в стандартном пуле потоков.

Но всё это теория от "менеджера программ в группе Microsoft C# and Visual Basic Language", которому наскоряк набили текст такие двоешники как Сева. Всегда поднимается новый поток, это наглядно иллюстрирует мой код.

му**к, это Net 4.0
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083753
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaму**к, это Net 4.0
Дибилоид, async await появился в 4.5, в статье как-раз приводятся примеры:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
static async Task<byte[]> TryFetchAsync(string url)
{
  var client = new WebClient();
  try
  {
    return await client.DownloadDataTaskAsync(url);
  }
  catch (WebException) { }
  return null;
}



Опять кухарка обделалась.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083757
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083758
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaРеализации FromAsync я и без тебя видел, они были еще в Rx задолго до тасков.
Речь идет о том, что async\await - конечный автомат, который не блокирует поток, как это делается в Wait'ax для тасков или Thread'ax.
Это совсем новая модель и совсем другое кино.У нас задача про "запрос в базу". Значит в первую очередь задействован IO Completion Port и его пул потоков (не путать с ThreadPool class). А всё остальное (Task, кодогенерация async/await и т. п) это удобные бантики, мало влияющие на производительность в данном случае. Пусть даже в новой асинхронной модели есть экономия на WaitHandle-ах, но в данном случае это "экономия на спичках".
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083772
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaРечь идет о том, что async\await - конечный автомат, который не блокирует поток, как это делается в Wait'ax для тасков или Thread'ax.И ещё раз, где в примере с ContinueWhenAll блокируется поток?! Зануда...
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083776
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erSeVa это Net 4.0 http://msdn.microsoft.com/ru-ru/magazine/hh456403.aspx ващето это из 13646380 SeVa Ничего особо сложного
Не обращай внимание на эту придурь :)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083781
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то читал про реализацию async/await. Там кодогенерировались Task.ContinueWith. Видимо, с тех пор что-то поменялось...
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083786
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot SeVa]
Код: sql
1.
2.
3.
4.
Main before 8
Foo before 8
Foo after 10
Main after 8


а почему FooAfter==10 ??? может быть всё таки разные потоки?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083791
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaResults
Код: c#
1.
2.
3.
4.
Main before 8
Foo before 8
Foo after 10
Main after 8



Те первый wait в Main блокирующий и выполнение идет в одном потоке, а c await Этого не происходит

Дуралей, это и говорит о том, что асинхронный await выполнился в другом потоке
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083798
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erа почему FooAfter==10 ??? может быть всё таки разные потоки?МСУэто и говорит о том, что асинхронный await выполнился в другом потоке Неожиданно.

А если бы это было WinForms/WPF приложение, поток был бы тот же. Но не повезло.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083805
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa.

Кстати, задача стояла "запустить односременно N асинхронных операций и подписаться на результат их выполнения". Как ты это собрался делать через async/await я не увидел.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083809
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кbeg-in-erа почему FooAfter==10 ??? может быть всё таки разные потоки?МСУэто и говорит о том, что асинхронный await выполнился в другом потоке Неожиданно.

А если бы это было WinForms/WPF приложение, поток был бы тот же. Но не повезло.

В асп.нет этот кодд вообще вешает приложение :)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public partial class _Default : Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Write(Thread.CurrentThread.ManagedThreadId);
        FooAsync().Wait();
    }

    async static Task FooAsync()
    {
        await Task.Delay(1000);
        HttpContext.Current.Response.Write(Thread.CurrentThread.ManagedThreadId);
    }
}



асн.нет априори асинхронен.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083813
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, застолбил тему тут: http://codearticles.ru/Home/ArticleView/2135

P.S. Сева, убей себя об эту статью. До тех пор, пока не покажешь мне код с асинком, в котором будут все Thread.CurrentThread.ManagedThreadId одинаковы, ты - тупая обезьяна с наклонностями унылой кухарки. Ну или просто - мрачный феерический талпайоп.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083818
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rx походу идёт в золотую корзину. Кому он теперь нужен, если поддержка Task вставлена аж в сам язык. Никого не хотел обидеть, просто мыли вслух...
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083830
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВ асп.нет этот кодд вообще вешает приложение :)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public partial class _Default : Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Write(Thread.CurrentThread.ManagedThreadId);
        FooAsync().Wait();
    }

    async static Task FooAsync()
    {
        await Task.Delay(1000);
        HttpContext.Current.Response.Write(Thread.CurrentThread.ManagedThreadId);
    }
}

+1

Про Asp.Net не скажу, но в WPF/WinForms вроде как будет мёртвая блокировка.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083837
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПро Asp.Net не скажу, но в WPF/WinForms вроде как будет мёртвая блокировка.
Ага, точно - тоже проверил на не тру технологиях :) такая же картина.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083891
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКороче, застолбил тему тут: http://codearticles.ru/Home/ArticleView/2135

P.S. Сева, убей себя об эту статью. До тех пор, пока не покажешь мне код с асинком, в котором будут все Thread.CurrentThread.ManagedThreadId одинаковы, ты - тупая обезьяна с наклонностями унылой кухарки. Ну или просто - мрачный феерический талпайоп.

Неугомонное чмо, те6е мало пачканья мозгов народу здесь, так ты еще говносайт завел.
О чем может сказать такой дебил как ты?
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38083935
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУКороче, застолбил тему тут: http://codearticles.ru/Home/ArticleView/2135

P.S. Сева, убей себя об эту статью. До тех пор, пока не покажешь мне код с асинком, в котором будут все Thread.CurrentThread.ManagedThreadId одинаковы, ты - тупая обезьяна с наклонностями унылой кухарки. Ну или просто - мрачный феерический талпайоп.

Неугомонное чмо, те6е мало пачканья мозгов народу здесь, так ты еще говносайт завел.
О чем может сказать такой дебил как ты?

Убогая проститутка, тебе не понравилось, как тебя сегодня опустили за "отличные знания" по работе с потоками? Обтекай, дурында.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38084071
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КRx походу идёт в золотую корзину. Кому он теперь нужен, если поддержка Task вставлена аж в сам язык. Никого не хотел обидеть, просто мыли вслух...


Никуда он не идет, в Rx 2.0 добавлена поддержка async\await и на клиенте - это лучший вариант.

Eric LippertAsync/await" is not a replacement for Rx any more than LINQ was a replacement for SQL. You can use LINQ to talk to a SQL back end; you can use task-based asynchrony with Rx to orchestrate work triggered by streams of events. These technologies should enhance each other, not compete.

Из вакансии MS

Familiarity with functional programming concepts and Reactive Extensions (Rx) is a strong bonus.


Новая модель для серверной части. Сейчас делаю нагрузочное тестирование, результаты радуют. Скалируется до 250 виртуальных пользователей(больше нет в моей лицензии) без всяких тормозов
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38084077
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVa.

Кстати, задача стояла "запустить односременно N асинхронных операций и подписаться на результат их выполнения". Как ты это собрался делать через async/await я не увидел.

Как я уже сказал, эта история для сервисов, просто возращаем Task<..> без всяких wait и все.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38084098
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaАлексей КSeVa.

Кстати, задача стояла "запустить одновременно N асинхронных операций и подписаться на результат их выполнения". Как ты это собрался делать через async/await я не увидел.

Как я уже сказал, эта история для сервисов, просто возращаем Task<..> без всяких wait и все.Ну вот и я о чём. :-)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38084103
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaпропущено...
Как я уже сказал, эта история для сервисов, просто возращаем Task<..> без всяких wait и все.Ну вот и я о чём. :-)
Это жесть...
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38084113
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaНовая модель для серверной части. Сейчас делаю нагрузочное тестирование, результаты радуют. Скалируется до 250 виртуальных пользователей(больше нет в моей лицензии) без всяких тормозовВ 4-м этого тоже можно добиться. Может не так удобно, но можно.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085372
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бл. Не знаю с чего начать.
это имхо, имхо может быть ошибочным..
Весь срач возник по поводу что стоит за await, ну естественно что там по всей логике должен стоять таск с вытекающим фоновым, но что это за поток, это возможная и как правило реализация единицы задачи.
но можно же взять написать свой класс задачи, без тасков, с реализаций структурыTaskAwaiter , и выкидывания метода наружу GetAwaiter, ибо наличие этого метода определяет может ли это стоять за await.
Ну естественно за "стек" этой задачи никуда не упорхнуть тем более и дальше, и эта реализация как пятое колесо телеге
ну это моё имхо а не утверждение
Но сама концепция этой технологии не определяет что задача должна выполняться
в фоновом потоке, а говорит что просто задача.( может что еще придумают), как бы абстракция. В конце концов можно в обыкновенном таске закинуть через SynchronizationContext делегат и он встанет в очередь на исполнение в основном потоке, но тут фишка - что если он зависнет то весь основной накроется медным тазом,синхо
Весь сахар состоит в await, в этом месте создается объект за мониторингом задачи, что стоит за await и делегатом куда пойдем если задача исполнится, делегат на код продолжения метода почему делегат чуть позже, после этого код гуляет дальше.
как реализована эта фишка - машина слежения, служебные потоки могут быть - их не отрицают создатели, так как это шаманство реализовано через функцию с пометкой async, может сложиться ощущение что все эти прелести создаются на стеке этой функции.
Но вроде как нет, при выходе из async F,код может гулять дальше, а объект слежение будет следить за задачей, и в один прекрасный момент он исполниться. С возможностью подарить нам замыкание. все это очень созвучно с запуском begininvoke, код идет дальше, а за слежением endinvoke - создаем отдельный поток.
Но если таких задач куча нам придется создавать кучу потоков, хранить где то результаты если результат одной задачи является элементом другой задачи.., следить за контекстами..
Тут и уместна эта технология, все слежение организовано единой машиной и если есть переплетений задач компилятор самследит за очередностью, и даже создает в машине внутренние переменные для выполнения этой цепочки задач, более точнее сказать, создает обертки - типы этих переменных и указатели на их объекты в куче включает в машину слежения, равно и для переменных объявленных в функции.
Но по истине шаманство заключается вот в чем.
только компилятор встречает в коде await он создает машину слежения, запихивает туда надзиратель за объектом await и все барахло из стека переносит в эту машину в виде делегата продолжения кода функции для продолжения в потоке вызова, и передает управление этой машине, по существу код продолжается за счет машины слежения.
Стек метода async уже нам не нужен, и код пошел дальше за счет машины,
Предположим что метод async -void, код дальше может переходить в стек новой функции, а машина слежения трансформироваться в таск и запускаться в служебном потоке, и продолжает следить за не выполненными в прошлом задачами.( если они действительно не выполнены),
Так как машина слежения это структура и структура аки стек исполнения кода( образно), тут как бы уместны рекомендации, о которых кричат создатели , содержать эту структуру в чистоте, в плане не лепить г..а в виде переменных на объекты в куче в коде функции, ибо при переносе это г..о, ляжет в структуру в виде указателей на объекты и как бы она для уборки становится замороченной по сравнению со стеком функции.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085414
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ниасилил...
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085422
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
дак интересно же, что там в кишках,
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085426
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
дак интересно же, что там в кишках,
Не спорю, но излагаешь ты опасно :)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085448
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
ну не опасно, же имхо, а то что резко, так как бы оживит повествование,
зы
Вот все у вас как на параде, - салфетку - туда, галстук - сюда, да "извините", да "пожалуйста-мерси", а так, чтобы по-настоящему (с)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085452
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиа так, чтобы по-настоящему (с)
Ну почему же, иногда и какашками кидаемся. Вон, вчера Севу чмыранули по-полной программе, сейчас сидит в кустах, раны зализывает
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085469
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде-то в степиМСУ,
дак интересно же, что там в кишках,
Не спорю, но излагаешь ты опасно :)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085470
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Ну у вас с Севой, это не отнять, это воспринимается уже как должное, хотя прок для тех кто следит за перепалкой абсолютно есть
не знаю я воспринимаю это уже спокойно,новичкам наверное дико, мне даже кажется в реале вы бы были неразлучными друзьями.
на полном сер..
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085489
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степив реале вы бы были неразлучными друзьями.
на полном сер..

+1
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085496
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
к стати про кишки, у меня есть друг прозектор , так вот с ним произошла презабавная история,
приходят родственники забирать тело горячо любимой бабушки, и застают такую картину, мой друг пыхтит выдирает
золотой мост у бабушки пассатижами, и не глядя на них орет, х.. че надо.., дочка бабули - хоп.. не насовсем..
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085659
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде-то в степиМСУ,
дак интересно же, что там в кишках,
Не спорю, но излагаешь ты опасно :)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085677
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиТут всё похоже на разворот циклов в конечный автомат в yield return . Если мне не показалось, прошлая реализация "этого" была через обёртывания следующего за await кода в Task.ContinueWith. Видимо не понравилось. Решили добавить ещё одну абстракцию, позволяющую обобщить Task, IObservable и прочие "асинхронности". И сделали через автомат, видимо решили сэкономить на количестве обращений к пулу потоков. А через что будет "продолжение" - зависит от наличия у "первого потока" контекста синхронизации. Если есть - всё пойдёт через него. Если нет - через пул потоков.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085714
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел неточность шаманство будет начато если компилятор встретит метод с async
даже если это метод пустой ( без await)все равно создаст структуру и запустит код через нее.
я не знаю, приживется ли, честно сказать я ей не пользовался никогда.
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085722
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
сов. верно, они и позиционируется ее с этой стороны -(не использует дополнительных ресурсов)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38085728
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КГде-то в степиТут всё похоже на разворот циклов в конечный автомат в yield return . Если мне не показалось, прошлая реализация "этого" была через обёртывания следующего за await кода в Task.ContinueWith. Видимо не понравилось. Решили добавить ещё одну абстракцию, позволяющую обобщить Task, IObservable и прочие "асинхронности". И сделали через автомат, видимо решили сэкономить на количестве обращений к пулу потоков. А через что будет "продолжение" - зависит от наличия у "первого потока" контекста синхронизации. Если есть - всё пойдёт через него. Если нет - через пул потоков.


Причины нового варианта:
- На каждый Task требуется выделение памяти, что приводит к лишней работе сборщика мусора. Это становится критичным при высоких нагрузках
- Ожидания обрабатываются отдельным тредом, а Боливар не может выдержать много. По непроверенным данным не больше 64.
- Таски, трэды и прочие радости совершенно не нужны, если идет вызовы i/o, которые обрабатываются операционкой.

ЗЫ Открою вам еще одну маленькую тайну : стеки не используются, локи не работают, 'продолжения' может не быть вовсе
ConfigureAwait(false)
...
Рейтинг: 0 / 0
Выборка из базы данных в несколько потоков
    #38086622
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
129 сообщений из 129, показаны все 6 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выборка из базы данных в несколько потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]