@IzeBerg ну... так вы ничего про ошибку не писали. А так поведение описанное вами вполне нормальное. Алгоритм простой: открываем соединение, посылаем запрос, нам возвращается курсор (не результат), считываем результат и отдаем ему кто просил, освобождаем курсор (закрываем DataReader), можем переходить к новому запросу.
@IzeBerg я думаю вам нужно сначала разобраться с этой ошибкой, ибо такое поведение неправильное. Как минимум потому что накладные расходы на установление соединения все-таки довольно велики.
@IzeBerg вам нужно организовать слой абстракции таким образом, что бы клиенскому коду казалось что он работает с одним соединением (желательно сделать методы асинхронными).
Как только клиенский код запрашивает результат какого-то запроса, этот запрос попадает в очередь компонента. Далее компонент постоянно проверяет наличие свободных соединений и отправляет в них запрос из очереди. Можно это делать по освобождению одного из соединений или в момент поступления нового запроса перед добавлением его в очередь проверять, есть ли у нас свободное соединение и только если его не нашлось - пихать в очередь.
Как только какое-то соединение вернуло результат, мы отдаем его в закрепленный за этим запросом обработчик (если честно не в курсе как это реализуется в .NET, давно на нем не писал и уж тем-более ничего подобного не делал). и переходим к нашей очереди запросов.
Примеров реализации именно под .NET подсказать не могу. На github лежит несколько реализаций на Java, которые могут что-то подсказать.
Вы хотели сказать, "наследуется от двух и более классов" может? Ибо если так как вы указали в вопросе - смысла мало. Предок то один - как обрщались так и обращайтесь.
ImageData и так содержит uInt8ClampedArray, собственно он учавствует в бенчмарках. Вариант с массивами чисто для сравнения и он намного медленнее. На десктопах в десятки раз. Но я в упор не понимаю как так выходит что на iOS подобные вычисления отрабатывают в сотню раз дольше. Это как-то грустно.
@madmages, вы точно уверены что знаете что такое "асинхронные вызовы"?
Дайте лучше человеку ссылку почитать о том как data-binding работает. Вообще прежде чем работать хоть с каким либо фреймворком следует хотя бы пару дней потратить на "поразбираться".
@madmages, нода нужна только для того что бы установить ништяки типа bower. С установкой ноды на шиндовс и обезьяна справится, с консолью человек так же разберется (придется так или иначе) если захочет. Так что хватит разводить панику на пустом месте и пугать человека.
@vtec ReactPHP это имлементация event loop, сам по себе он особо ничего не умеет, это просто фреймворк. А на базе оного уже можно построить websocket/http/tcp/udp сервер, демоны и прочее. Собственно Ratchet это имплементация websocket-сервера на базе ReactPHP.
спешу вас расстроить, но для приложений уровня gmail или гуглодок ангуляр не особо подходит. Он хорош для SPA но продукты такого уровня как gmail всеравно в итоге придется писать на чем-то своем.
@NotBad_Bugfix подучите язык, поучитесь инкапсулировать логику для начала в функции а затем в объекты, и старайтесь допускать меньше дублирования кода. Вообще если вы кодите в каких-нибудь IDE они бы вам даже ругались что у вас мессиво из повторяющихся селекторов.