<?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>Mon, 15 Jun 2026 13:49:00 +0300</pubDate>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message82628/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			можно обойти это, если это проблема. <br />Я делал такие варианты:<br />1) Все колбеки в одном скрипте - оркестратор. <br />2) &nbsp;Новые потоки можно создать тремя способами <br />1.скрипт луа <br />2. еще функции типа main в этом же скрипте, но в новых потоках<br />3. новые state в новых потоках &nbsp;- скрипты на любом языке <br />в любом случае у меня колбеки лишь в одном скрипте <br />
			<i>10.06.2026 21:12:29, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message82628/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message82628/topic9517/</guid>
			<pubDate>Wed, 10 Jun 2026 21:12:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message82627/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_U3NSiVES" href="/user/17142/" bx-tooltip-user-id="17142">Йцукен</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/17142/" target="_blank" rel="nofollow">Йцукен</a></noindex> написал:<br />Видно, что OnStop второго скрипта вызывается только после завершения main первого.<br />=============<br /> В версии 13.0.0 изменили схему: OnStop вызывается сразу после завершения OnStop предыдущего скрипта, не зависимо от того остановился ли main предыдущего скрипта.<br />Возможно, разработчики прочитали моё сообщение #4 или просто так совпало.<br />=============<br />Очевидно нет механизма ожидания завершения в другом скрипте потока main предыдущего скрипта.<br />Было бы удивительно если бы они его реализовали. . &nbsp; <br />
			<i>10.06.2026 21:02:19, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message82627/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message82627/topic9517/</guid>
			<pubDate>Wed, 10 Jun 2026 21:02:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message82626/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_apYDVsPr" href="/user/17142/" bx-tooltip-user-id="17142">Йцукен</a> написал:<br />Видно, что OnStop второго скрипта вызывается только после завершения main первого.<br />=============<br />В версии 13.0.0 изменили схему: OnStop вызывается сразу после завершения OnStop предыдущего скрипта, не зависимо от того остановился ли main предыдущего скрипта.<br />Возможно, разработчики прочитали моё сообщение #4 или просто так совпало. <br />
			<i>10.06.2026 14:19:45, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message82626/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message82626/topic9517/</guid>
			<pubDate>Wed, 10 Jun 2026 14:19:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message82570/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_7iMrzHia" href="/user/17142/" bx-tooltip-user-id="17142">Йцукен</a> написал:<br />Если делать финализацию OnStop, то при закрытии квика скрипты будут останавливаться последовательно, т.е. ждать друг друга.<br />Если - в main, то есть вероятность, что main не уложится в отведённые 5 сек, и что-нибудь не успеет. Тогда надо в OnStop делать return побольше. Есть ли тут подводные камни?<br />Поделитесь опытом, как вы делаете?<br />=============<br />Полагаю, что все скрипты запускаются в основном потоке QUIK Функции main в них запускаются каждая в своем потоке. <br />Глобальный state каждого скрипта исполняет лишь колбеки поэтому он и так стоит . <br />Остановка потоков main очевидно будет в той последовательности в которой запускали скрипты. &nbsp; <br />
			<i>01.06.2026 06:07:53, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message82570/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message82570/topic9517/</guid>
			<pubDate>Mon, 01 Jun 2026 06:07:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message82569/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			ИИ рекомендует:<br /><br />====quote====<br />Как правильно организовывать остановку в QUIK<br />1. OnStop() только ставит флаг. Никаких циклов, очисток таблиц или долгих операций.<br />2. Очистка ресурсов выполняется в main() после выхода из рабочего цикла.<br />=============<br />Кто что думает? <br />
			<i>01.06.2026 00:20:55, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message82569/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message82569/topic9517/</guid>
			<pubDate>Mon, 01 Jun 2026 00:20:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message81976/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если ставить флаг завершения скрипта в OnClose, то можно финализацию делать в main. Тогда при закрытии квика скрипты будут завершаться параллельно. <br />
			<i>12.03.2026 20:15:13, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message81976/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message81976/topic9517/</guid>
			<pubDate>Thu, 12 Mar 2026 20:15:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message81958/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Похоже, скрипты в любом случае останавливаются последовательно.<br />Логи двух скриптов при закрытии QUIK 12.8.5.3<br />
====code====
<pre>11.03.26 21:34:50.907 OnStop
11.03.26 21:34:51.892 main
11.03.26 21:34:52.908 main
11.03.26 21:34:53.923 main
11.03.26 21:34:54.923 main
11.03.26 21:34:55.939 main</pre>
=============

====code====
<pre>11.03.26 21:34:56.923 OnStop
11.03.26 21:34:56.939 main
11.03.26 21:34:57.955 main
11.03.26 21:34:58.970 main
11.03.26 21:34:59.986 main
11.03.26 21:35:00.987 main
11.03.26 21:35:02.003 main</pre>
=============
<br />Видно, что OnStop второго скрипта вызывается только после завершения main первого.<br />Да и при остановке скриптов кнопкой &quot;Остановить&quot; GUI подвисает, пока скрипт полностью не остановится, независимо, в каком потоке происходит финализация. <br />
			<i>11.03.2026 21:40:55, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message81958/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message81958/topic9517/</guid>
			<pubDate>Wed, 11 Mar 2026 21:40:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message81957/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			====code====
<pre>function OnStop()
&nbsp;&nbsp;run = nil
&nbsp;&nbsp;t_id = nil
end

function main()
&nbsp;&nbsp;while run do
&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t_id, ...)
&nbsp;&nbsp;&nbsp;&nbsp;...
&nbsp;&nbsp;&nbsp;&nbsp;sleep(1000)
&nbsp;&nbsp;end
&nbsp;&nbsp;finalize()
end</pre>
=============
<br />Есть вероятность, что после срабатывания OnStop до удаления идентификатора таблицы (t_id = nil) main попытается записать в таблицу (SetCell)? <br />
			<i>11.03.2026 19:46:35, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message81957/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message81957/topic9517/</guid>
			<pubDate>Wed, 11 Mar 2026 19:46:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message81955/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			По DestroyTable - в курсе, что её запускать лучше в OnStop <br />
			<i>11.03.2026 18:48:08, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message81955/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message81955/topic9517/</guid>
			<pubDate>Wed, 11 Mar 2026 18:48:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>В каком потоке делать финализацию при останове скрипта?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message81952/topic9517/">В каком потоке делать финализацию при останове скрипта?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если делать финализацию OnStop, то при закрытии квика скрипты будут останавливаться последовательно, т.е. ждать друг друга.<br />Если - в main, то есть вероятность, что main не уложится в отведённые 5 сек, и что-нибудь не успеет. Тогда надо в OnStop делать return побольше. Есть ли тут подводные камни?<br />Поделитесь опытом, как вы делаете? <br />
			<i>11.03.2026 17:20:39, Йцукен.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message81952/topic9517/</link>
			<guid>http://forum.quik.ru/messages/forum10/message81952/topic9517/</guid>
			<pubDate>Wed, 11 Mar 2026 17:20:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
