<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; WSH: Multiprocess workers]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=16078</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=16078&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «WSH: Multiprocess workers».]]></description>
		<lastBuildDate>Sun, 21 Feb 2021 10:40:14 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=146431#p146431</link>
			<description><![CDATA[<p><strong>alexii</strong>, а ноги &quot;не дотягиваются&quot; ? <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Sun, 21 Feb 2021 10:40:14 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=146431#p146431</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=146430#p146430</link>
			<description><![CDATA[<p>Увы, руки «не доходят».</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sun, 21 Feb 2021 07:41:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=146430#p146430</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=146427#p146427</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Sun, 21 Feb 2021 06:37:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=146427#p146427</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=146409#p146409</link>
			<description><![CDATA[<p>OFF: Я всегда заглядываю <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sat, 20 Feb 2021 19:23:49 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=146409#p146409</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=146359#p146359</link>
			<description><![CDATA[<p><strong>Rumata</strong>, благодарю за ответ ). Рад видеть, что ещё кто-то заглядывает в раздел WSH. На GitHub закинул, но пока с ним на &quot;вы&quot;. Буду приучаться.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Sat, 20 Feb 2021 08:28:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=146359#p146359</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=146352#p146352</link>
			<description><![CDATA[<p>Примерно неделю назад читал начальный пост. Тогда еще появилась мысль предложить выложить на гитхаб. Честно скажу - интересно, не проверял. До этого еще читал предыдущий пост про Shell.Connector. Кстати было интересно почитать -- ведь в том обсудении я тоже участвовал, но новый компонент пока не пробовал.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 19 Feb 2021 22:55:09 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=146352#p146352</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Multiprocess workers]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=146351#p146351</link>
			<description><![CDATA[<p>Интересно, хоть кто-нибудь скачал, проверил ? <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 19 Feb 2021 22:29:47 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=146351#p146351</guid>
		</item>
		<item>
			<title><![CDATA[WSH: Multiprocess workers]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=146120#p146120</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Wed, 10 Feb 2021 14:05:49 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=146120#p146120</guid>
		</item>
	</channel>
</rss>
