<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; WSH: Multiprocess workers]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=16078&amp;type=atom" />
	<updated>2021-02-21T10:40:14Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=16078</id>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=146431#p146431" />
			<content type="html"><![CDATA[<p><strong>alexii</strong>, а ноги &quot;не дотягиваются&quot; ? <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2021-02-21T10:40:14Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=146431#p146431</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=146430#p146430" />
			<content type="html"><![CDATA[<p>Увы, руки «не доходят».</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-02-21T07:41:06Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=146430#p146430</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=146427#p146427" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>OFF: Я всегда заглядываю <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p></blockquote></div><p> крайне рад это видеть ! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Было ощущение, что форум &quot;заброшен&quot; . Тогда, очень надеюсь увидеть конструктивную критику и предложения по улучшению, если таковые будут. Я пока в сомнениях верности реализации.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2021-02-21T06:37:42Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=146427#p146427</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=146409#p146409" />
			<content type="html"><![CDATA[<p>OFF: Я всегда заглядываю <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-02-20T19:23:49Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=146409#p146409</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=146359#p146359" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong>, благодарю за ответ ). Рад видеть, что ещё кто-то заглядывает в раздел WSH. На GitHub закинул, но пока с ним на &quot;вы&quot;. Буду приучаться.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2021-02-20T08:28:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=146359#p146359</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=146352#p146352" />
			<content type="html"><![CDATA[<p>Примерно неделю назад читал начальный пост. Тогда еще появилась мысль предложить выложить на гитхаб. Честно скажу - интересно, не проверял. До этого еще читал предыдущий пост про Shell.Connector. Кстати было интересно почитать -- ведь в том обсудении я тоже участвовал, но новый компонент пока не пробовал.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2021-02-19T22:55:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=146352#p146352</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=146351#p146351" />
			<content type="html"><![CDATA[<p>Интересно, хоть кто-нибудь скачал, проверил ? <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2021-02-19T22:29:47Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=146351#p146351</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH: Multiprocess workers]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=146120#p146120" />
			<content type="html"><![CDATA[<p>Коллеги, приветствую. Решил поделиться с вами своими экспериментами по &quot;изготовлению&quot; Worker-ов для WSH. Если кто не сталкивался вот <a href="https://developer.mozilla.org/ru/docs/Web/API/Worker/Worker">ссылка</a>.<br />В кратце о воркерах - для распределения выполнения задач в HTML5 можно выполнять скрипты в отдельных потоках Worker-ах. <br /></p><div class="codebox"><pre><code>
worker = new Worker(url)
</code></pre></div><p>В качестве url передаётся либо ссылка на скрипт либо тело скрипта, который будет выполняться в отдельном потоке.<br />Обмен данными с Worker-ом реализуется через метод <strong>postMessage(data)</strong> и событие <strong>onmessage(data)</strong><br />В качестве <strong>data</strong> могут передаваться <span class="bbu">только</span> сериализуемые данные (т.е всё что можно превратить в текстовое представление JSON). Это позволяет избежать проблем доступа к COM и необходимости внедрять маршалинг. На самом деле это очень краткое описание и за этой технологией стоит гораздо больше. Можно создавать Shared воркеры, доступные из разных контекстов, настраивать порты для воркеров и прочее... прочее...</p><p>	Меня очень привлекла внешняя простота реализации и захотелось адаптировать её к WSH. Первое с чего начал - решил задействовать этот механизм как он есть. Т.е создать инстанс <strong>htmlfile</strong> от него получить доступ к конструктору <strong>Worker</strong> и дальше уже дело техники. Всё это прекрасно работает, но есть огромный жирный минус в том, что внутри скрипта воркера нельзя создавать ActiveX объекты. Скучно.... Куда ж нам без них. Решил попробовать реализовать альтернативу. Взял за основу <a href="http://forum.script-coding.com/viewtopic.php?pid=145422#p145422">Shell.Connector.wsc</a>. Собственно его методы и события я делал как раз по аналогии с воркерами. Далее поверх собрал обёртку <strong>Worker.js</strong> (основной конструктор воркеров) и <strong>WorkerCore.js</strong> (Скрипт обеспечивающий обратную связь из скрипта воркера с хостом). Думал ниже описать работу примера, но не уверен, что тема будет интересна большому кругу лиц. Так что решил ограничиться комментариями в коде. Если совсем кратко - в главном скрипте создаётся массив тасков, для демонстрации представленный в виде таймаутов и 3 воркера, каждый из которых запрашивает у хост процесса новое задание, выполняет и снова запрашивает. Так потихоньку они разбирают очередь.</p><p><span style="color: grey"><strong>P.S Собственно для чего завёл эту тему - хотел узнать какие решения использовали вы. Возможно есть предложения по упрощению реализации. Буду рад почитать. )</strong></span></p><p><strong>UPD 11.02.2021</strong><br />1) Заменил способ проверки доступности хостового процесса. Реализация через WMI сильно грузила систему.<br />2) сократил количество передаваемых данных<br />3) Оптимизировал код примера<br />4) Добавил код выгрузки воркеров, если заданий более не осталось<br />5) Добавил обработку события &quot;убивания&quot; воркера или падения его из-за ошибки.</p><p><strong>UPD 19.02.2021</strong><br />1) Залил код на GitHub - <a href="https://github.com/diqipib/WSH-Worker">ссылка</a><br />2) Собрал пример использования многопроцессной параллельной сборки картинной галереи. 4 воркера генерируют изображения картин и передают их в основной процесс. Используются только встроенные в Windows компоненты. Для генерации изображений используется WIA.</p><p>Пример полученной галереи:</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="https://i.imgur.com/OyP6IJN.png" alt="https://i.imgur.com/OyP6IJN.png" /></span></p></div></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2021-02-10T14:05:49Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=146120#p146120</id>
		</entry>
</feed>
