Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Collection v5 (https://javascript.ru/forum/project/47717-collection-v5.html)

kobezzza 22.07.2016 14:42

Цитата:

Сообщение от Poznakomlus (Сообщение 423070)
А где модель потоков с использованием динамически созданных worker? :)

Потоки Collection платформонезависимы (т.к. имплементятся исключительно силами языка) и легко работают внутри Worker. А создавать какуе то специальную абстракцию ради этого - идиотизм.

cyber 22.07.2016 14:42

Poznakomlus, из того что я помню воркеры в ноде не работают

kobezzza 22.07.2016 14:45

Цитата:

Сообщение от cyber (Сообщение 423073)
Poznakomlus, из того что я помню воркеры в ноде не работают

Есть плагины, которые добавляют этот функционал. Но суть не в этом. Никто не запрещает юзать потоки Collection внутри каких либо "настоящих" потоков или процессов, будть то браузер или нода, или ещё кто.

Например в Nashorn есть потоки, т.к. он использует Java, а там с этим всё оч хорошо.

Vlasenko Fedor 22.07.2016 14:47

Цитата:

Сообщение от kobezzza
А создавать какуе то специальную абстракцию ради этого - идиотизм.

Реализация многопоточности на фронте - идиотизм? :(

kobezzza 22.07.2016 14:49

Цитата:

Реализация многопоточности на фронте - идиотизм?
Она уже есть. Идиотизм создавать ненужную абстракцию.

2 или 3 года назад, когда я впервые реализовал потоки на генераторах, я писал заметку:

Цитата:

В отличии от Worker-ов, которые являются сторонним API от браузера, потоки Collection полностью построены поверх JS, т.е. будут одинаково работать как в браузере, так и на сервере или десктопе, где есть поддержка ES6 generators. Потоки Collection могут быть созданы внутри WebWorker-а.

Также, поскольку потоки Collection работают в рамках потока, в котором были созданы, то у них есть прямой доступ к переменным замыкания и DOM, а в случае WebWorker потоки изолированы от главного потока и могут общаться только по средствам сообщений.

Количество создаваемых потоков Collection ограничено количеством доступной памяти и может достигать десятков и даже сотней тысяч одновременно работающих потоков, однако следует заметить, что чем больше создано потоков, тем медленнее они будут работать. В WebWorker в рамках домена количество создаваемых потоков строго ограничено и не может превышать некоторого небольшого числа (10-20 одновременных потоков).

Скорость выполнения задачи в потоке Collection обычно ниже, чем скорость простого выполнения в главном потоке или WebWorker, поэтому использовать такие потоки нужно в первую очередь, чтобы не блокировать главный поток, а не для увеличения общей скорости работы, т.к. внутри всё работает последовательно в рамках одного потока.

Vlasenko Fedor 22.07.2016 14:56

Ок уговорили потестим в свободное время :)

kobezzza 22.07.2016 19:32

Опубликовал beta.9

kobezzza 25.07.2016 10:58

Выпустил beta.11

Появился новый метод .extend (который делает расширения объекта другими). Метод заменил собой статический метод $C.extend (но ссылка для удобства осталась). Также метод теперь поддерживает расширение Map и Set при глубоком копировании, а сам обход копируемого объекта теперь делается с помощью $C forEach, поэтому стали доступны все его параметры.

vadim5june 29.07.2016 19:45

kobezzza,
не нашел документацию, ссылки на вики не работает

kobezzza 29.07.2016 20:17

Цитата:

Сообщение от vadim5june (Сообщение 423755)
kobezzza,
не нашел документацию, ссылки на вики не работает

Это бета, дока будет как только у меня появиться время на неё. Думаю это произойдёт в августе.


Часовой пояс GMT +3, время: 04:57.