powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выборка из базы данных в несколько потоков
25 сообщений из 129, страница 3 из 6
Выборка из базы данных в несколько потоков
    #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
25 сообщений из 129, страница 3 из 6
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выборка из базы данных в несколько потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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