<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Не завершается main после остановки скрипта]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Не завершается main после остановки скрипта форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Wed, 08 Apr 2026 22:17:36 +0300</pubDate>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39365/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_NJP90rCq" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />Так и должно быть?<br />=============<br />Добрый день.<br />Поведение странное, постараемся разобраться с этим. Передал коллегам, чтобы они зарегистрировали обращение по данной проблеме. <br />
			<i>19.08.2019 15:33:37, Nikolay Pavlov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39365/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39365/topic4683/</guid>
			<pubDate>Mon, 19 Aug 2019 15:33:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39364/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_zgtc86w7" href="/user/459/" bx-tooltip-user-id="459">Nikolay Pavlov</a> написал:<br />скрипт висел 5 секунд на строчке SetCell(t_id, 1, 1, tostring(r ))<br />=============<br />Так и должно быть? <br />
			<i>19.08.2019 15:16:56, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39364/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39364/topic4683/</guid>
			<pubDate>Mon, 19 Aug 2019 15:16:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39305/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Да, проблема похоже в другом, добавил логирование, скрипт висел 5 секунд на строчке SetCell(t_id, 1, 1, tostring(r )):<br />
====code====
<pre>dofile(getScriptPath() .. "&#92;&#92;tools.lua")
local run = true

local function f()
&nbsp;&nbsp;for i = 1, 2000000 do
&nbsp;&nbsp;&nbsp;&nbsp;local a = 1 + 2 * 3 / 4
&nbsp;&nbsp;end
&nbsp;&nbsp;Log("f")
&nbsp;&nbsp;return run
end

function OnInit(script_path)
&nbsp;&nbsp;log_file = io.open(script_path .. ".log", "w+t")
end

function main()
&nbsp;&nbsp;local t_id = AllocTable()
&nbsp;&nbsp;AddColumn(t_id, 1, "", true, QTABLE_DOUBLE_TYPE, 20)
&nbsp;&nbsp;CreateWindow(t_id)
&nbsp;&nbsp;InsertRow(t_id, -1)
&nbsp;&nbsp;while run do
&nbsp;&nbsp;&nbsp;&nbsp;local r = f()
&nbsp;&nbsp;&nbsp;&nbsp;Log("main1" .. tostring(r) .. tostring(t_id))
&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t_id, 1, 1, tostring(r))
&nbsp;&nbsp;&nbsp;&nbsp;Log("main2" .. tostring(r))
&nbsp;&nbsp;&nbsp;&nbsp;sleep(1)
&nbsp;&nbsp;&nbsp;&nbsp;Log("main3" .. tostring(r))
&nbsp;&nbsp;end
&nbsp;&nbsp;message('Exit')
end

function OnStop()
&nbsp;&nbsp;Log('OnStop1')
&nbsp;&nbsp;run = nil
&nbsp;&nbsp;Log('OnStop2')
&nbsp;&nbsp;return 5000
end
</pre>
=============

====code====
<pre> 08/13/2019 18:44:22.145387 main1true124
 08/13/2019 18:44:22.147395 main2true
 08/13/2019 18:44:22.149390 main3true
 08/13/2019 18:44:22.204382 f
 08/13/2019 18:44:22.204382 main1true124
 08/13/2019 18:44:22.220383 main2true
 08/13/2019 18:44:22.222388 main3true
 08/13/2019 18:44:22.276383 f
 08/13/2019 18:44:22.277385 main1true124
 08/13/2019 18:44:22.419389 main2true
 08/13/2019 18:44:22.421386 main3true
 08/13/2019 18:44:22.421386 OnStop1
 08/13/2019 18:44:22.421386 OnStop2
 08/13/2019 18:44:22.476385 f
 08/13/2019 18:44:22.476385 main1nil124
</pre>
============= <br />
			<i>13.08.2019 14:51:24, Nikolay Pavlov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39305/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39305/topic4683/</guid>
			<pubDate>Tue, 13 Aug 2019 14:51:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39304/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Изменить свой код так:
====code====
<pre>&nbsp;&nbsp;while run do
&nbsp;&nbsp;&nbsp;&nbsp;local r = f()
&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t_id, 1, 1, tostring(r))
&nbsp;&nbsp;&nbsp;&nbsp;sleep(15)
&nbsp;&nbsp;end</pre>
=============
у меня есть предположение, что выполняя паузу в 1 мск вы забиваете очередь Windows, у которой по умолчанию стоит таймер обращения к ресурсам процессора 15.6 мск. Со sleep(15) у меня до строки message('Exit') доходит всегда. <br />
			<i>13.08.2019 14:24:14, Nikolay Pavlov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39304/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39304/topic4683/</guid>
			<pubDate>Tue, 13 Aug 2019 14:24:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39303/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_PRg27v4U" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />На современных компьютерах время работы функции f() менее 65 мс<br />=============<br />Я только предположил, что проблема в долгой работе функции f(), наверное, правильнее было ответить так, если весь код до строчки message('Exit') будет выполняться более 5 секунд, то при нажатии кнопки Стоп интерпретатор Lua подождет 5 секунд и завершит поток main принудительно, если он еще жив. <br />
			<i>13.08.2019 13:52:16, Nikolay Pavlov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39303/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39303/topic4683/</guid>
			<pubDate>Tue, 13 Aug 2019 13:52:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39302/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_yBm7axnY" href="/user/459/" bx-tooltip-user-id="459">Nikolay Pavlov</a>, если вы тестируете на Pentium 100, то, возможно, так и есть.<br />На современных компьютерах время работы функции f() менее 65 мс <br />
			<i>13.08.2019 13:30:06, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39302/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39302/topic4683/</guid>
			<pubDate>Tue, 13 Aug 2019 13:30:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39300/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_x80MDuOV" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />Почему после остановки скрипта main не завершается (чаще всего) должным образом?<br />=============<br />Добрый день.<br />Судя по содержимому функции f(), ее вызов может не завершиться за 5 секунд, которые Вы даете скрипту на корректное завершение (то значение которое возвращает функция OnStop()), если за этот таймаут поток main не успеет корректно завершиться, то интерпретатор Lua принудительно завершить этот поток. <br />
			<i>13.08.2019 13:14:52, Nikolay Pavlov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39300/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39300/topic4683/</guid>
			<pubDate>Tue, 13 Aug 2019 13:14:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39299/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Под "не завершается должным образом" имеется ввиду невыполнение последнего оператора <B>message</B>('Exit') после нажатия кнопки "Остановить" <br />
			<i>13.08.2019 13:02:29, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39299/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39299/topic4683/</guid>
			<pubDate>Tue, 13 Aug 2019 13:02:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39270/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если под некорретным поведением подразумевается ошибка, которая здесь не указана, то предположу, что есть проблема вывода в таблицу, т.к. при остановке скрипта окно таблицы закрывается, а OnStop еще не вызван. В main нет ни одной проверки, что таблица существует и она не закрыта, вот и падает при попытке вывести в закрытую таблицу.<br />Также sleep лучше повысить до 50 мс (т.к. используется вывод в таблицу), иначе Квик начнет процессор нагружать. <br />
			<i>10.08.2019 10:49:37, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39270/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39270/topic4683/</guid>
			<pubDate>Sat, 10 Aug 2019 10:49:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не завершается main после остановки скрипта</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message39252/topic4683/">Не завершается main после остановки скрипта</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			====code====
<pre>local run = true

local function f()
&nbsp;&nbsp;for i = 1, 2000000 do
&nbsp;&nbsp;&nbsp;&nbsp;local a = 1 + 2 * 3 / 4
&nbsp;&nbsp;end
&nbsp;&nbsp;return run
end

function main()
&nbsp;&nbsp;local t_id = AllocTable()
&nbsp;&nbsp;AddColumn(t_id, 1, "", true, QTABLE_DOUBLE_TYPE, 20)
&nbsp;&nbsp;CreateWindow(t_id)
&nbsp;&nbsp;InsertRow(t_id, -1)
&nbsp;&nbsp;while run do
&nbsp;&nbsp;&nbsp;&nbsp;local r = f()
&nbsp;&nbsp;&nbsp;&nbsp;SetCell(t_id, 1, 1, tostring(r))
&nbsp;&nbsp;&nbsp;&nbsp;sleep(1)
&nbsp;&nbsp;end
&nbsp;&nbsp;message('Exit')
end

function OnStop()
&nbsp;&nbsp;run = nil
&nbsp;&nbsp;message('OnStop')
&nbsp;&nbsp;return 5000
end</pre>
=============
Почему после остановки скрипта main не завершается (чаще всего) должным образом? <br />
			<i>09.08.2019 11:35:29, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message39252/topic4683/</link>
			<guid>http://forum.quik.ru/messages/forum10/message39252/topic4683/</guid>
			<pubDate>Fri, 09 Aug 2019 11:35:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
