<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Многопоточность в Луа]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Многопоточность в Луа форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 12 May 2026 20:33:23 +0300</pubDate>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39006/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Разработчикам Quik:<br />OC: Windows7<br />Средство просмотра: Process Explorer v16.25<br />Объект Quik ver.7.11 and ver.8.0.23<br /><br />При запуске Lua скрипта запускается новый поток. При остановке скрипта HANDLE потока остается висеть в системе.<br />При запуске того же скрипта создается новый Handle потока (старый не удаляется).<br />Если контекст потока по некоторым оценкам занимает 1 Мб, то с каждым перезапуском &nbsp;скриптов ресурс системы уменьшается.<br /><br />Это утечка ресурсов или так задумано?<br />Или это только у меня такое? <br />
			<i>22.07.2019 14:50:12, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39006/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39006/topic3755/</guid>
			<pubDate>Mon, 22 Jul 2019 14:50:12 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38942/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_G2KnbZX9" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />На 512 инструментов выставляете заявки?<br />=============<br />Это результаты проверки граничных условий работы функции на С/С++ без QUIK <br />
			<i>18.07.2019 11:25:55, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38942/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38942/topic3755/</guid>
			<pubDate>Thu, 18 Jul 2019 11:25:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38930/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			На 512 инструментов выставляете заявки? <br />
			<i>16.07.2019 21:04:22, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38930/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38930/topic3755/</guid>
			<pubDate>Tue, 16 Jul 2019 21:04:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38896/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Hzs43394" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />Windows предоставляет всем нам единственную функцию для создания потоков: CreateThread Так что в любом случае поток создаётся в итоге через неё.<br />=============<br />Да, это так. QueueUserWorkItem в конце концов тоже вызывает функцию CreateThread для создания потоков.<br />Только первая функция берёт потоки из текущего рабочего пула. На моей машине-системе ограничение пула 512 потоков. Программа просто арендует их временно &nbsp;у ОС.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_0stGo9q7" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />Вы расскажите чего хотите добиться<br />=============<br />Изучал форум по концепциям: один скрипт - много бумаг (или каналов обмена с внешней программой) или много скриптов-потоков с одной бумагой ( или одним каналом обмена с внешней программой).<br />Прочитал, что при увеличении скриптов происходит торможение запуска или работы скриптов. Вот и захотелось полюбопытствовать, как разработчики отдают управление скриптам-потокам LUA.<br />Ведь если исчерпан пул рабочих потоков, то при запросе потока для скрипта через &nbsp;QueueUserWorkItem система будет ждать первого освобождения потока из рабочего пула и только потом выдаст его приложению.<br />У меня задержка идет после аренды 512 потоков QueueUserWorkItem. Может у кого и другой пул..<br />А для CreateThread &nbsp;такого нет. <br />
			<i>15.07.2019 13:09:05, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38896/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38896/topic3755/</guid>
			<pubDate>Mon, 15 Jul 2019 13:09:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38873/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_yCut8Kph" href="/user/2190/" bx-tooltip-user-id="2190">Олег</a> написал:<br />SleepWaitForSingleObjectWaitForMultipleObject и т.д.При выходе потока из спячки ОС Windows вернет управление в тот же самый поток или в любой другой свободный поток из рабочего пула потоков Windows?<br />=============<br />Разумеется по выходу из указанных функций произойдёт возврат ровно в этот же поток, иначе и не может быть.<br /><br />Вообще вы куда-то не туда роете, не теми какими-то вопросами задаётесь.<br />Вы расскажите чего хотите добиться - возможно, вам предложат решение. Это будет более плодотворный путь. <br />
			<i>12.07.2019 20:34:18, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38873/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38873/topic3755/</guid>
			<pubDate>Fri, 12 Jul 2019 20:34:18 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38872/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_DZW7QOus" href="/user/2190/" bx-tooltip-user-id="2190">Олег</a> написал:<br />Программа QUIK создает потоки для каждого скрипта напрямую через CreateThread или берет из пула потоков, предоставляемых Windows.Например, через QueueUserWorkItem ?<br />=============<br />Windows предоставляет всем нам единственную функцию для создания потоков: CreateThread <br />Так что в любом случае поток создаётся в итоге через неё. <br />
			<i>12.07.2019 20:31:30, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38872/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38872/topic3755/</guid>
			<pubDate>Fri, 12 Jul 2019 20:31:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38862/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_AVw9Cr11" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />вы находитесь вне Lua<br />=============<br />Да, это так.<br />Но потоки для скриптов создаёт QUIK. Как? Может сказать только разработчик QUIK. Пользователям - только опытным путём.<br />LUA использует LUAC API, а там и вызов функции ожидания ОС. А возврат зависит от вызова. Отсюда был и вопрос.<br />Не хотелось бы влезать в диспетчеризацию потоков ОС. Оставим это разработчикам QUIK.<br /><br /><br />Насколько я помню, вы используете PIPE каналы с гибридным способом ожидания (OVERLAPPED +SLEEP).<br />Вопрос по PIPE:<br />1. Вы для каждой бумаги создаёте свой канал в отдельном скрипте(потоке) или для каждой бумаги создаете свой экземпляр канала в одном скрипте?<br />2. При обмене сообщениями можно ли пихать в PIPE несколько сообщений и на другом конце автоматически считывать ровно по одному сообщению без операций парсинга потока?<br />(Как FIFO). Ткните меня, если можно, в пример или функцию, используемую для этого. &nbsp; <br />
			<i>12.07.2019 12:13:57, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38862/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38862/topic3755/</guid>
			<pubDate>Fri, 12 Jul 2019 12:13:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38861/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_acr3XX4H" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br /> подтверждается моим опытом.<br />=============<br /><br /><br />=============<br />Спасибо Вам, что у вас есть подобный опыт.<br />Надеюсь, что разработчики QUIK этот подход менять не будут. <br />
			<i>12.07.2019 11:49:14, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38861/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38861/topic3755/</guid>
			<pubDate>Fri, 12 Jul 2019 11:49:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38854/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			странный вопрос про<br />Sleep<br />WaitForSingleObject<br />WaitForMultipleObject и т.д.<br /><br />это ведь функции ОС. они не имеют вообще никакого отношения к Lua. мухи отдельно, котлеты отдельно.<br />от начала и до конца (входа/выхода) каждой из этих трёх функций, вы находитесь вне Lua. <br />
			<i>11.07.2019 21:39:05, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38854/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38854/topic3755/</guid>
			<pubDate>Thu, 11 Jul 2019 21:39:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38853/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Я не могу гарантировать наличие или отсутствие каких то буковок в исходных текстах терминала, но то что возврат идет в тот же поток исполнения, подтверждается моим опытом. <br />
			<i>11.07.2019 19:08:58, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38853/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38853/topic3755/</guid>
			<pubDate>Thu, 11 Jul 2019 19:08:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38850/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_8NUi2cKd" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br />без сторонних эффектов.<br />=============<br />Это означает, что не используется рабочий пул потоков (например, через функцию QueueUserWorkItem) и возврат после спячки ВСЕГДА осуществляется в поток с тем же номером, который был и до спячки в потоке main().<br />Я правильно понял? <br />
			<i>11.07.2019 17:01:34, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38850/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38850/topic3755/</guid>
			<pubDate>Thu, 11 Jul 2019 17:01:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38848/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В потоке main() все эти функции работают именно так, как от них ожидается: выполнение функций останавливается и продолжается без сторонних эффектов. <br />
			<i>11.07.2019 16:38:05, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38848/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38848/topic3755/</guid>
			<pubDate>Thu, 11 Jul 2019 16:38:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38847/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<B>Известно из доков:</B><br /><br />Все callback функции выполняются в основном потоке QUIK.<br />Функция main в каждом скрипте запускается в своем потоке.<br /><br /><B><br /></B><br /><B>Вопрос по многопоточности в LUA:</B>Программа QUIK создает потоки для каждого скрипта напрямую через CreateThread или берет из пула потоков, предоставляемых Windows.<br />Например, через QueueUserWorkItem ?<br /><br /><br /><B>К чему это?</B><br />Запускаю несколько скриптов &nbsp;заведомо больше общего количества ядер процессоров.<br />Внутрь скриптов вставляю различные функции ожидания или засыпания потока типа<br /><br />Sleep<br />WaitForSingleObject<br />WaitForMultipleObject и т.д.<br /><br />При выходе потока из спячки ОС Windows вернет управление в тот же самый поток или в любой другой свободный поток из рабочего пула потоков Windows? <br />
			<i>11.07.2019 16:30:24, Олег.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38847/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38847/topic3755/</guid>
			<pubDate>Thu, 11 Jul 2019 16:30:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message31914/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_TKLEOS1u" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Спасибо. Это реально задействует новые ядра процессора?<br />=============<br />Ну должно, если верить рекламе LuaLanes... )))<br />Я её сам не стал использовать, мне не нравится изоляция потоков по переменным и необходимость использовать объекты Linda для обмена данными, ну зато эта библиотека будет работать поверх стандартной однопоточной Lua. <br />
			<i>21.06.2018 22:27:37, Suntor.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message31914/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message31914/topic3755/</guid>
			<pubDate>Thu, 21 Jun 2018 22:27:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message31912/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Спасибо. Это реально задействует новые ядра процессора? <br />
			<i>21.06.2018 22:19:40, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message31912/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message31912/topic3755/</guid>
			<pubDate>Thu, 21 Jun 2018 22:19:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message31907/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Mjm3FzQQ" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Но не могу разобраться, где мне запускать эти потоки? Внутри функции main или за её пределами?<br />=============<br />Вы же их не просто запускаете, а для проведения расчётов, у вас в коде есть место, где эти расчёты начинаются, и где заканчиваются. Вот в этом месте просто добавьте запуск дополнительных потоков, и дальше, ждите от них результата в этом же месте. Там где у вас комментарий «<I>--утомительные расчёты на основе анализа множества файлов с рыночной информацией</I>» стоит... <br />
			<i>21.06.2018 21:14:28, Suntor.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message31907/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message31907/topic3755/</guid>
			<pubDate>Thu, 21 Jun 2018 21:14:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message31905/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Я нашёл библиотеку lualanes<br />Она даёт многопоточность <noindex><a href="http://lualanes.github.io/lanes/" target="_blank" rel="nofollow">http://lualanes.github.io/lanes/</a></noindex><br />Но не могу разобраться, где мне запускать эти потоки? Внутри функции main или за её пределами?<br />Если запускать длительный процесс ДО запуска main, то будет подвисание скрипта. <br />
			<i>21.06.2018 20:23:04, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message31905/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message31905/topic3755/</guid>
			<pubDate>Thu, 21 Jun 2018 20:23:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточность в Луа</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message31904/topic3755/">Многопоточность в Луа</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Прошу дать совет.<br />У меня работает скрипт, обрабатывающий большой объём данных. На расчёт уходит много времени. Прошу подсказать, можно ли в луа реализовать многопоточность, чтобы эффективно задействовать все ядра виртуальной машины.<br />В нынешнем виде скрипт работает так:<br />
====code====
<pre>f_ticker_list="GAZR,SBRF,MIX,Si,RTS"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for instrument in string.gmatch(f_ticker_list,"%w+") do
--утомительные расчёты на основе анализа множества файлов с рыночной информацией
end</pre>
=============
Он задействует только 1 ядро виртуальной машины. <br />Как разбросать этот процесс на другие свободные ядра виртуалки? <br />Спасибо <br />
			<i>21.06.2018 20:16:02, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message31904/topic3755/</link>
			<guid>http://forum.quik.ru/messages/forum10/message31904/topic3755/</guid>
			<pubDate>Thu, 21 Jun 2018 20:16:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
