|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
SeVa асинхронность без много поточности на клиенте для параллельных запросов согласен, но в await надо делать свой конект к базе ибо мы не проллезем через игольное ушко общего конекта.. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2012, 23:39 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Где-то в степиSeVa асинхронность без много поточности на клиенте для параллельных запросов согласен, но в await надо делать свой конект к базе ибо мы не проллезем через игольное ушко общего конекта.. connect'ы тоже асинхронные и суть не в этом. Нет тупого блокирования потока, пока выполняется запрос или другая асинхронная операция, которая связана с I/O. За счет этого получается совсем другое кино ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:12 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
beg-in-erSeVaНе ребята, а вы точно в лесу все живете. Ни один не сказал про новую модель - асинхронность без много поточности, которая доступна в Net 4.5. знали бы разработчики 4.5 - как это у них получилось - асинхронность в 1м потоке - они бы сильно удивились. ну скорее это он утрировано сказал, ведь в этой модели мы не создаем потоки, не используем локи и инвоки, все за нас делает компилятор, а вот сам термин асинхронность совсем может не подразумевать псевдопотоки , это скорее всего отношение порядка действий, что вполне можно добиться легально на одном потоке ( диспетчер событий), а уж в свете вытесняемой многозадачности говорить бессмысленно,это моё имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:15 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
МСУSeVaНе ребята, а вы точно в лесу все живете. Ни один не сказал про новую модель - асинхронность без много поточности, которая доступна в Net 4.5. Эта история нужна везде: на клиенте для параллельных запросов, чтобы не было такой унылости как на web страницах, и на сервере, чтобы было скалирование Безграмотная кухарка, async/await запускает задачу в фоновом потоке и при ее завершении выполняет код в основном потоке, в результате чего код выглядит почти как синхронный (включая обработку исключений). Садись, двойка. Mудафаил, ты полный му**к и не стесняешься об этом всем рассказывать. Нет никаких фоновых потоков для async/await, а есть конечный автомат, который создает компилятор. Чмо убогое, двойку тебе ставить не буду, для детсадовцев этого не делают ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:23 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
SeVaГде-то в степипропущено... согласен, но в await надо делать свой конект к базе ибо мы не проллезем через игольное ушко общего конекта.. connect'ы тоже асинхронные и суть не в этом. Нет тупого блокирования потока, пока выполняется запрос или другая асинхронная операция, которая связана с I/O. За счет этого получается совсем другое кино да бзн , нет ожидания as блокировок, пока не готов даже на эту тему вести беседу, на уровне кода все понятно. но пока не разбирался с шаманством компилятора, в принципе я представляю что там может быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:25 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Где-то в степиbeg-in-erпропущено... знали бы разработчики 4.5 - как это у них получилось - асинхронность в 1м потоке - они бы сильно удивились. ну скорее это он утрировано сказал, ведь в этой модели мы не создаем потоки, не используем локи и инвоки, все за нас делает компилятор, а вот сам термин асинхронность совсем может не подразумевать псевдопотоки , это скорее всего отношение порядка действий, что вполне можно добиться легально на одном потоке ( диспетчер событий), а уж в свете вытесняемой многозадачности говорить бессмысленно,это моё имхо. Асинхронность без много поточности в новой модели означает, что вызывающий поток не блокируется, а вся работа, если это возможно(метод имеет суффикс Async) перекладывается на операционку. В результате резко возрастает масштабируемость системы, которой раньше невозможно было добиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:27 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
SeVaМСУпропущено... Безграмотная кухарка, async/await запускает задачу в фоновом потоке и при ее завершении выполняет код в основном потоке, в результате чего код выглядит почти как синхронный (включая обработку исключений). Садись, двойка. Mудафаил, ты полный му**к и не стесняешься об этом всем рассказывать. Нет никаких фоновых потоков для async/await, а есть конечный автомат, который создает компилятор. Чмо убогое, двойку тебе ставить не буду, для детсадовцев этого не делают читал в свое время Липпера, рад статей на эту тему, там действительно он рассказывает о этой фитче как о реализации конечных автоматов ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:34 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Где-то в степиSeVaпропущено... connect'ы тоже асинхронные и суть не в этом. Нет тупого блокирования потока, пока выполняется запрос или другая асинхронная операция, которая связана с I/O. За счет этого получается совсем другое кино да бзн , нет ожидания as блокировок, пока не готов даже на эту тему вести беседу, на уровне кода все понятно. но пока не разбирался с шаманством компилятора, в принципе я представляю что там может быть. Ничего особо сложного ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:35 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
SeVaАсинхронность без много поточности в новой модели означает, что вызывающий поток не блокируется, ну в begininvike он ка бы тоже не блокируется а идет дальше ( это я так для порядка) просто интересно где он берет стек куда складывает барахло при разрыве планировщиком, как бы два таких стека в одном потоке на могут быть, он по идее должен весь диспетчер автоматов тужа ложить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:44 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Чето я тупанул про стек, вполне легально ложится в один. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 00:57 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Где-то в степиЧето я тупанул про стек, вполне легально ложится в один. Для этого предназначен SynchronizationContext , но если есть возможность лучше его не использовать, тк может быть существенным тормозом ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 01:08 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
SeVa, если оно завязано на уровне ядра - остроумное решение, завтра попробую разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 01:12 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Тормоза вполне объяснимы ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 01:13 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
МСУАлексей КParallel тут ни к чему. Тут к месту Task на базе Async Pattern. А по попе за параллель? :) Код: c# 1. 2. 3. 4.
У нас запрос к БД. Выделять поток из пула на ожидание 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 06:21 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
dvimВ клиенте СУБД-многопоточность нужна очень редко.Нет. Запуск запросов к серверу (БД, веб-сервис и т. п.) в UI-потоке в наше время считается плохим тоном. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 06:28 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Ошибка Алексей К Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 06:32 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
beg-in-er, они ввели прерывания в основной поток и обрабатывают 2 поток через прерывания :)) (это была такая щутка) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 07:05 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Алексей КОшибка Алексей К Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
автор 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 не будет ничего блокировать при вызовах асинхронных вариантов методов для БД ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 08:20 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 08:27 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
SeVaМСУпропущено... Безграмотная кухарка, async/await запускает задачу в фоновом потоке и при ее завершении выполняет код в основном потоке, в результате чего код выглядит почти как синхронный (включая обработку исключений). Садись, двойка. Mудафаил, ты полный му**к и не стесняешься об этом всем рассказывать. Нет никаких фоновых потоков для async/await, а есть конечный автомат, который создает компилятор. Чмо убогое, двойку тебе ставить не буду, для детсадовцев этого не делают Кухарка, ты тупая курица без грамма серого вещества в черепной коробке, конечный автомат у тебя в унылой физиономии, а не в компиляторе. Иди разбей свой лоб об буквари, async/await создает отдельный поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 09:39 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
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-го фреймворка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 12:43 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
МСУSeVaпропущено... Mудафаил, ты полный му**к и не стесняешься об этом всем рассказывать. Нет никаких фоновых потоков для async/await, а есть конечный автомат, который создает компилятор. Чмо убогое, двойку тебе ставить не буду, для детсадовцев этого не делают Кухарка, ты тупая курица без грамма серого вещества в черепной коробке, конечный автомат у тебя в унылой физиономии, а не в компиляторе. Иди разбей свой лоб об буквари, async/await создает отдельный поток. Вот и Гнидка пожаловала с очередной порцией слизи. Нашел фоновые потоки для тасков? Извратность твоих хаотичных мыслишек в впереди планеты всей. Кроме тебя мало бы кто до этого додумался ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 12:58 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
Алексей К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. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 13:05 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
SeVaМСУпропущено... Кухарка, ты тупая курица без грамма серого вещества в черепной коробке, конечный автомат у тебя в унылой физиономии, а не в компиляторе. Иди разбей свой лоб об буквари, async/await создает отдельный поток. Вот и Гнидка пожаловала с очередной порцией слизи. Нашел фоновые потоки для тасков? Извратность твоих хаотичных мыслишек в впереди планеты всей. Кроме тебя мало бы кто до этого додумался Твоему гнустному умишке с гнилыми потрохами мозгов я подготовил примерчик для первоклашек. Осилишь? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Что скажешь, марамойка, почему я получу разные идентификаторы тредов? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 13:06 |
|
Выборка из базы данных в несколько потоков
|
|||
---|---|---|---|
#18+
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. Который из них? Их там около десятка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2012, 13:13 |
|
|
start [/forum/topic.php?fid=20&msg=38082776&tid=1405470]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 328ms |
total: | 495ms |
0 / 0 |