<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Тест зависания терминала QUIK 10.0.1.18]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Тест зависания терминала QUIK 10.0.1.18 форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 12 May 2026 20:37:13 +0300</pubDate>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67821/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Dua6mZFn" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />_sk_,<br />Вы не ответили, я исправил Ваш тест.<br />Что теперь не так?<br />=============<br />У меня всё хорошо, спасибо. <br />
			<i>30.12.2022 07:44:11, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67821/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67821/topic7843/</guid>
			<pubDate>Fri, 30 Dec 2022 07:44:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67820/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_29PYre8P" href="/user/15542/" bx-tooltip-user-id="15542">Anton Belonogov</a> написал:<br /><noindex><a href="/user/115/" target="_blank" rel="nofollow">_sk_</a></noindex>, добрый день.<br /><br />Реализация Lua-машины такова, что перед входом в главный цикл интерпретатора объект синхронизации захватывается и отпускается только в некоторых случаях, например, при вызове внешних функций (в частности, sleep). Рекомендуем использовать вызов функции sleep() внутри цикла, чтобы исключить зависание приложения.<br />=============<br />Спасибо за пояснения о ттехподдержки. Хорошо, что они совпадают с теми, что высказали другие участники общения в этой теме. <br />
			<i>30.12.2022 07:41:13, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67820/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67820/topic7843/</guid>
			<pubDate>Fri, 30 Dec 2022 07:41:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67804/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			_sk_,<br />Вы не ответили, я исправил Ваш тест.<br />Что теперь не так? <br />
			<i>29.12.2022 18:08:04, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67804/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67804/topic7843/</guid>
			<pubDate>Thu, 29 Dec 2022 18:08:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67803/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/user/13952/" target="_blank" rel="nofollow">TGB</a></noindex>,<br />исправленный скрипт не виснет<br />Вы вместо брызжания проверьте тест.<br />-------------------<br />если есть другие проблемы , то пишите я исправлю.<br />----------------------<br />И очевидно, и у кого что болит тот о том и говорит <br />
			<i>29.12.2022 18:06:12, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67803/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67803/topic7843/</guid>
			<pubDate>Thu, 29 Dec 2022 18:06:12 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67802/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_oauFyksn" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br /> _sk_ ,вот Ваш тест с исправленными Вашими ошибками. Работает без проблем.<br />=============<br /> &nbsp; &nbsp; Вы до сих пор не поняли, что у _sk_ нет проблем со скритом ( он делает flag &nbsp;= &nbsp; true и все у него хорошо ). Его интерисует странное поведение скрипта когда flag =false и это нормально.<br /> &nbsp; Вообще, из того что видно невооруженным взглядом, у вас постоянный зуд отметиться на форуме (как у собачки, выпущенной на прогулку &nbsp;:: ). Зачем вы работаете на форуме «прокладкой» между комментариями? <br /> &nbsp; Явно, что у вас проблемы с вашими комплексами и вы пытаетесь здесь их скомпенсировать. Но вы до сих пор не научились выделять фрагменты текстов комментариев, которые вы цитируете. Вас можно пожалеть (девочки точно не любят), но вы постоянно спамите на форуме и скоро переполните его базу &nbsp;:: . &nbsp;Меня это беспокоит и только поэтому я на вас реагирую &nbsp;:: .<br />=============<br />Вы не поняли, я исправил у него ошибки и можете делать хоть faLSE &nbsp; <br />
			<i>29.12.2022 18:02:50, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67802/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67802/topic7843/</guid>
			<pubDate>Thu, 29 Dec 2022 18:02:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67801/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_C36k6QNF" href="/user/115/" bx-tooltip-user-id="115">_sk_</a>, добрый день.<br /><br />Реализация Lua-машины такова, что перед входом в главный цикл интерпретатора объект синхронизации захватывается и отпускается только в некоторых случаях, например, при вызове внешних функций (в частности, sleep). Рекомендуем использовать вызов функции sleep() внутри цикла, чтобы исключить зависание приложения. <br />
			<i>29.12.2022 17:09:53, Anton Belonogov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67801/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67801/topic7843/</guid>
			<pubDate>Thu, 29 Dec 2022 17:09:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67751/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			попроще можно сказать что и main и OnStop исполняются (вызываются) под единым мьютексом.<br />который снимается всего двумя способами<br />а) выходом из функции<br />б) обращением к С-function<br />и sleep - это вариант б)<br /><br />при б) мьютекс снимается на входе в С-функцию и возвращается при возвращении из неё.<br />при этом если С-функция в свою очередь обратится в Lua, то мьютекс тоже будет выставлен на время такого обращения и снимется при возврате в С функцию<br />отличие между Lua и С-функцией определяется через lua_iscfunction<br /><br />в Quik Lua почти всё C-функции.<br />поэтому sleep(0) можно заменить, например, tostring, да и pcall тоже С-функция, так что наверно в main сработало бы pcall(run) без флагов <br />
			<i>24.12.2022 23:21:33, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67751/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67751/topic7843/</guid>
			<pubDate>Sat, 24 Dec 2022 23:21:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67750/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_5uY7t571" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> _sk_ ,вот Ваш тест с исправленными Вашими ошибками. Работает без проблем.<br />=============<br /> &nbsp; &nbsp;Вы до сих пор не поняли, что у _sk_ нет проблем со скритом ( он делает flag &nbsp;= &nbsp; true и все у него хорошо ). Его интерисует странное поведение скрипта когда flag =false и это нормально.<br /> &nbsp; Вообще, из того что видно невооруженным взглядом, у вас постоянный зуд отметиться на форуме (как у собачки, выпущенной на прогулку &nbsp;<img src="http://forum.quik.ru/upload/main/smiles/5/icon_smile.png" border="0" data-code=":smile:" data-definition="SD" alt=":smile:" style="width:16px;height:16px;" title="С улыбкой" class="bx-smile" /> ). Зачем вы работаете на форуме «прокладкой» между комментариями? <br /> &nbsp; Явно, что у вас проблемы с вашими комплексами и вы пытаетесь здесь их скомпенсировать. Но вы до сих пор не научились выделять фрагменты текстов комментариев, которые вы цитируете. Вас можно пожалеть (девочки точно не любят), но вы постоянно спамите на форуме и скоро переполните его базу &nbsp;<img src="http://forum.quik.ru/upload/main/smiles/5/icon_smile.png" border="0" data-code=":smile:" data-definition="SD" alt=":smile:" style="width:16px;height:16px;" title="С улыбкой" class="bx-smile" /> . &nbsp;Меня это беспокоит и только поэтому я на вас реагирую &nbsp;<img src="http://forum.quik.ru/upload/main/smiles/5/icon_smile.png" border="0" data-code=":smile:" data-definition="SD" alt=":smile:" style="width:16px;height:16px;" title="С улыбкой" class="bx-smile" /> . <br />
			<i>24.12.2022 21:12:43, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67750/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67750/topic7843/</guid>
			<pubDate>Sat, 24 Dec 2022 21:12:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67745/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/user/115/" target="_blank" rel="nofollow">_sk_</a></noindex>,<br />вот Ваш тест с исправленными Вашими ошибками. <br />Работает без проблем.<br /><br />
====code====
<pre>local flag =false -- можно и false и true

local foregroundColor = RGB(0, 0, 0)
local backgroundColor = RGB(192, 255, 192)

local function setTableColors(foregroundColor, backgroundColor)
&nbsp;&nbsp;&nbsp;&nbsp;local nRows, nCols = GetTableSize(tableId)
&nbsp;&nbsp;&nbsp;&nbsp;if nRows and nCols then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for row = 1, nRows do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for col = 1, nCols do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(tableId, row, col,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backgroundColor, foregroundColor,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backgroundColor, foregroundColor)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
end

local function ensureWindowOpened()
&nbsp;&nbsp;&nbsp;&nbsp;if tableId == nil then&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; end
&nbsp;&nbsp;&nbsp;&nbsp;if IsWindowClosed(tableId) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateWindow(tableId)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetWindowPos(tableId, 0, 0, 300, 100)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetWindowCaption(tableId, "hang_test")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertRow(tableId, 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertRow(tableId, 2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, 1, 1, "11")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, 1, 2, "12")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, 2, 1, "21")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, 2, 2, "22")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetSelectedRow(tableId, 1)
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;setTableColors(foregroundColor, backgroundColor)
end

function OnInit(scriptPath)
&nbsp;&nbsp;&nbsp;&nbsp;tableId = AllocTable()
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 1, "col1", true, QTABLE_STRING_TYPE, 5)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 2, "col2", true, QTABLE_STRING_TYPE, 5)
&nbsp;&nbsp;&nbsp;&nbsp;SetTableNotificationCallback(tableId, function(tId, msg, par1, _)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if msg == QTABLE_SELCHANGED then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetSelectedRow(tId, 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end)
&nbsp;&nbsp;&nbsp;&nbsp;ensureWindowOpened()
end

local function run()
&nbsp;&nbsp;&nbsp;&nbsp;ensureWindowOpened()
&nbsp;&nbsp;&nbsp;&nbsp;if tableId then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetSelectedRow(tableId, 2)
&nbsp;&nbsp;&nbsp;&nbsp;end

end

function OnStop(flag)
&nbsp;&nbsp;&nbsp;DestroyTable(tableId);
&nbsp;&nbsp;&nbsp;&nbsp;interrupted = true
end

function main()
&nbsp;&nbsp;&nbsp;&nbsp;message("STARTED", 1)
&nbsp;&nbsp;&nbsp;&nbsp;while not interrupted do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if flag then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;message("SHUTDOWN", 1)
end
</pre>
=============
<br /> &nbsp; <br />
			<i>24.12.2022 09:06:02, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67745/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67745/topic7843/</guid>
			<pubDate>Sat, 24 Dec 2022 09:06:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67744/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			исправьте ошибку в скрипте и сделайте так:
====code====
<pre>function main()
&nbsp;&nbsp;&nbsp;&nbsp;message("STARTED", 1)
&nbsp;&nbsp;&nbsp;&nbsp;while not interrupted do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(10)
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;pcall(closeWindow)
&nbsp;&nbsp;&nbsp;&nbsp;message("SHUTDOWN", 1)
end
</pre>
=============
и читайте больше учебники а не треп на форуме. <br />
			<i>24.12.2022 05:56:23, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67744/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67744/topic7843/</guid>
			<pubDate>Sat, 24 Dec 2022 05:56:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67740/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_pzLZ7W2H" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />Я видел Ваши предложения по этому поводу, на которые разработчики, к сожалению, не реагируют.<br />=============<br /> &nbsp; &nbsp;Для QLua 5.3 есть простое и эффективное решение, которое я протестировал. Но это решение не подходит к Qlua 5.4 так как там было существенно изменено управление памятью и с этим я разбираться не стал. Разработчик QUIK (через поддержку) заявил, что будет поддерживаться только QLua 5.4. Поэтому свои предложения я снял, опасаясь того, что &nbsp;их реализация разработчиком в QLua 5.4. может оказаться некорректной и последствия могут оказаться более неприятными чем то, что есть сейчас. <br />
			<i>23.12.2022 19:04:48, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67740/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67740/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 19:04:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67739/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			&quot;Чистый луа&quot; к пустой голове прикладывать бесполезно. <br />
			<i>23.12.2022 18:06:27, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67739/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67739/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 18:06:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67738/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			в колбеке <br />в этой функции Вы уничтожаете окно<br />----------------------------<br />local function closeWindow()<br /> &nbsp; &nbsp;local t = tableId<br /> &nbsp; &nbsp;tableId = nil<br /> &nbsp; &nbsp;if t then<br /> &nbsp; &nbsp; &nbsp; &nbsp;DestroyTable(t)<br /> &nbsp; &nbsp;end<br />end<br />------------------<br />А в main вы уничтожаете nil.<br />Очевидно у Вас все вылетает по ошибке<br />и вы вместо того чтобы правильно сделать ставите pcall<br />----------------<br />Т е не зная причину Вы блокируете сообщение об ошибке.<br />полный дилетантизм. <br />
			<i>23.12.2022 18:04:38, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67738/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67738/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 18:04:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67737/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			зачем закрывать окно и в колбеке и в main?<br />----------------------------<br />function OnStop(flag) <br /><B> &nbsp; pcall(closeWindow)</B><br /> &nbsp; &nbsp;interrupted = true<br />end<br /><br />function main()<br /> &nbsp; &nbsp;message(&quot;STARTED&quot;, 1)<br /> &nbsp; &nbsp;while not interrupted do<br /> &nbsp; &nbsp; &nbsp; &nbsp;run()<br /> &nbsp; &nbsp; &nbsp; &nbsp;if flag then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sleep(0)<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp;end<br /> <B> &nbsp; pcall(closeWindow)</B><br /> &nbsp; &nbsp;message(&quot;SHUTDOWN&quot;, 1)<br />end<br />==================== <br />
			<i>23.12.2022 17:59:11, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67737/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67737/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 17:59:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67736/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			читайте внимательно документацию прежде чем писать тесты.<br />----------------<br />Например,<br />OnStop - Функция вызывается терминалом QUIK при остановке скрипта из диалога &nbsp;управления и при закрытии терминала QUIK.<p>Функция возвращает количество миллисекунд, которое дается скрипту на &nbsp;завершение работы. </p><p>Если функция не возвращает число, то таймаут завершения &nbsp;работы скрипта остается равным 5 секундам.</p><span class="bx-font" style="font-size:;">По истечении интервала времени, данного скрипту на завершение работы, <br />функция main() завершается принудительно. При этом возможна <br />потеря системных ресурсов. <p>=======================</p><p>Т е Вам дали время на завершение потока майн</p><p>Там и надо закрывать окна. А Вы делаете это в колбеке.</p><p>Вы это где прочитали?</p><p></p><p></p></span> <br />
			<i>23.12.2022 17:27:05, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67736/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67736/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 17:27:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67735/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_cVALpkkA" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />Предположу, что это ошибка автора &nbsp;скрипта, так как в нем не учитывается многопоточность. &nbsp;<br />=============<br /> &nbsp; &nbsp;Филосов &nbsp;:: . &nbsp; Укажите конкретно в чем ошибка автора.<br />---<br /> &nbsp; Ошибки автора нет. Есть ошибка в QUIK, состоящая в том, что длинные участки фрагментов кода скрипта на &quot;чистом Lua&quot; (без вызова C-функций) блокируют переключение потоков обслуживающего колбеки и выполняющего main. Я не буду повторять свои комментарии по этому поводу. Читайте форум.<br />=============<br />ошибка автора в отсутствии знаний.<br />И Ваша тоже так как Вы пишите про &quot;чистый луа&quot; который существует лишь в виде функций на чистом СИ.<br />Это профанация и дилетанты вам верят. <br />
			<i>23.12.2022 17:21:25, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67735/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67735/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 17:21:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67734/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_VSic73cJ" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/115/" target="_blank" rel="nofollow">_sk_</a></noindex> написал:<br />Спасибо большое за пояснение!<br />=============<br /> &nbsp; &nbsp; Если код функции OnStop модифицировать следующим образом:<br /> 
====code====
<pre>&nbsp;&nbsp; function&nbsp;&nbsp; OnStop (flag)
&nbsp;&nbsp;&nbsp;&nbsp;interrupted&nbsp;&nbsp;=&nbsp;&nbsp; true 
&nbsp;&nbsp;&nbsp;&nbsp; message ( "OnStop executed" ,&nbsp;&nbsp;1 )
&nbsp;&nbsp;&nbsp;&nbsp;pcall(closeWindow)
 end 
&nbsp;&nbsp;</pre>
=============
 <br /> &nbsp; то зависания не будет и, наверное, понятно почему.<br />=============<br />Да, так и есть. Я пробовал этот вариант, но уже не стал писать в теме.<br /><br />В общем, получается, что неплохо бы со стороны разработчиков обеспечить переключение между потоками даже в случае &quot;длинного чистого Lua-кода&quot;. Я видел Ваши предложения по этому поводу, на которые разработчики, к сожалению, не реагируют.<br /><br />Конечно, большинство программ пользователей имеют главный цикл со sleep внутри, так что совсем уж в явном виде проблема не стоит. Но переключение между потоками может сделать как работу терминала более отзывчивой, а также зависание, с которым я столкнулся, исключит. <br />
			<i>23.12.2022 15:18:38, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67734/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67734/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 15:18:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67725/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_9srJsW2m" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Предположу, что это ошибка автора &nbsp;скрипта, так как в нем не учитывается многопоточность. &nbsp;<br />=============<br /> &nbsp; Филосов &nbsp;<img src="http://forum.quik.ru/upload/main/smiles/5/icon_smile.png" border="0" data-code=":smile:" data-definition="SD" alt=":smile:" style="width:16px;height:16px;" title="С улыбкой" class="bx-smile" /> . &nbsp; Укажите конкретно в чем ошибка автора.<br />---<br /> &nbsp; Ошибки автора нет. Есть ошибка в QUIK, состоящая в том, что длинные участки фрагментов кода скрипта на "чистом Lua" (без вызова C-функций) блокируют переключение потоков обслуживающего колбеки и выполняющего main. Я не буду повторять свои комментарии по этому поводу. Читайте форум. <br />
			<i>23.12.2022 12:07:41, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67725/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67725/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 12:07:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67719/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			чтобы устранить проблему надо разрешать работу колбекам ,<br />когда функция main получит все данные для ее нормальной работы.<br />иначе будет кир-дык. <br />
			<i>23.12.2022 10:47:57, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67719/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67719/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 10:47:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67718/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_f2X4faDI" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />Берём следующий скрипт. Если в первой строке стоит flag = true, то скрипт нормально запускается и останавливается из меню скриптов. Если в первой строке поставить flag = false, происходит зависание терминала при остановке скрипта. В зависимости от значения переменной flag либо имеется sleep(0) в функции main(), либо отсутствует на пути выполнения кода.<br /><br />У меня зависание воспроизводится в терминалах версий 10.0.0 и 10.0.1.<br /><br />Три вопроса:<br />1) Может ли кто-то ещё подтвердить, что зависание происходит (чтобы исключить особенность моего компьютера)?<br />2) Знает ли кто-то причину такого поведения?<br />3) Что разработчики терминала могут сказать по этому поводу?<br /><br />Сам скрипт:<br /><br /> 
====code====
<pre>&nbsp;&nbsp; local&nbsp;&nbsp;flag&nbsp;&nbsp;=&nbsp;&nbsp; true&nbsp;&nbsp; -- если установить в false, то при остановке скрипта происходит зависание (убирается sleep(0) в функции main) 

 local&nbsp;&nbsp;foregroundColor&nbsp;&nbsp;=&nbsp;&nbsp; RGB ( 0 ,&nbsp;&nbsp;0 ,&nbsp;&nbsp;0 )
 local&nbsp;&nbsp;backgroundColor&nbsp;&nbsp;=&nbsp;&nbsp; RGB ( 192 ,&nbsp;&nbsp;255 ,&nbsp;&nbsp;192 )

 local&nbsp;&nbsp;interrupted&nbsp;&nbsp;=&nbsp;&nbsp; false 
 local&nbsp;&nbsp;tableId

 local&nbsp;&nbsp; function&nbsp;&nbsp; setTableColors (foregroundColor, backgroundColor)
&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;nRows, nCols&nbsp;&nbsp;=&nbsp;&nbsp;GetTable Size (tableId)
&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;nRows&nbsp;&nbsp;and&nbsp;&nbsp;nCols&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;row&nbsp;&nbsp;=&nbsp;&nbsp; 1 , nRows&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;col&nbsp;&nbsp;=&nbsp;&nbsp; 1 , nCols&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetColor (tableId, row, col,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backgroundColor, foregroundColor,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backgroundColor, foregroundColor)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp; end 
 end 

 local&nbsp;&nbsp; function&nbsp;&nbsp; ensureWindowOpened ()
&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;tableId&nbsp;&nbsp;=&nbsp;&nbsp;=&nbsp;&nbsp; nil&nbsp;&nbsp; then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; IsWindowClosed (tableId)&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CreateWindow (tableId)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetWindowPos (tableId,&nbsp;&nbsp;0 ,&nbsp;&nbsp;0 ,&nbsp;&nbsp;300 ,&nbsp;&nbsp;100 )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetWindowCaption (tableId,&nbsp;&nbsp;"hang_test" )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InsertRow (tableId,&nbsp;&nbsp;1 )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InsertRow (tableId,&nbsp;&nbsp;2 )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetCell (tableId,&nbsp;&nbsp;1 ,&nbsp;&nbsp;1 ,&nbsp;&nbsp;"11" )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetCell (tableId,&nbsp;&nbsp;1 ,&nbsp;&nbsp;2 ,&nbsp;&nbsp;"12" )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetCell (tableId,&nbsp;&nbsp;2 ,&nbsp;&nbsp;1 ,&nbsp;&nbsp;"21" )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetCell (tableId,&nbsp;&nbsp;2 ,&nbsp;&nbsp;2 ,&nbsp;&nbsp;"22" )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetSelectedRow (tableId,&nbsp;&nbsp;1 )
&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp;setTableColors(foregroundColor, backgroundColor)
 end 

 local&nbsp;&nbsp; function&nbsp;&nbsp; closeWindow ()
&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;t&nbsp;&nbsp;=&nbsp;&nbsp;tableId
&nbsp;&nbsp;&nbsp;&nbsp;tableId&nbsp;&nbsp;=&nbsp;&nbsp; nil 
&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;t&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DestroyTable (t)
&nbsp;&nbsp;&nbsp;&nbsp; end 
 end 

 function&nbsp;&nbsp; OnInit (scriptPath)
&nbsp;&nbsp;&nbsp;&nbsp;tableId&nbsp;&nbsp;=&nbsp;&nbsp; AllocTable ()
&nbsp;&nbsp;&nbsp;&nbsp; AddColumn (tableId,&nbsp;&nbsp;1 ,&nbsp;&nbsp;"col1" ,&nbsp;&nbsp;true , QTABLE_STRING_TYPE,&nbsp;&nbsp;5 )
&nbsp;&nbsp;&nbsp;&nbsp; AddColumn (tableId,&nbsp;&nbsp;2 ,&nbsp;&nbsp;"col2" ,&nbsp;&nbsp;true , QTABLE_STRING_TYPE,&nbsp;&nbsp;5 )
&nbsp;&nbsp;&nbsp;&nbsp; SetTableNotificationCallback (tableId,&nbsp;&nbsp;function (tId, msg, par1, _)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;msg&nbsp;&nbsp;=&nbsp;&nbsp;=&nbsp;&nbsp;QTABLE_SELCHANGED&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetSelectedRow (tId,&nbsp;&nbsp;1 )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp; end )
&nbsp;&nbsp;&nbsp;&nbsp;ensureWindowOpened()
 end 

 local&nbsp;&nbsp; function&nbsp;&nbsp; run ()
&nbsp;&nbsp;&nbsp;&nbsp;ensureWindowOpened()
&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;tableId&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetSelectedRow (tableId,&nbsp;&nbsp;2 )
&nbsp;&nbsp;&nbsp;&nbsp; end 
 end 

 function&nbsp;&nbsp; OnStop (flag)
&nbsp;&nbsp;&nbsp;&nbsp;pcall(closeWindow)
&nbsp;&nbsp;&nbsp;&nbsp;interrupted&nbsp;&nbsp;=&nbsp;&nbsp; true 
 end 

 function&nbsp;&nbsp; main ()
&nbsp;&nbsp;&nbsp;&nbsp; message ( "STARTED" ,&nbsp;&nbsp;1 )
&nbsp;&nbsp;&nbsp;&nbsp; while&nbsp;&nbsp; not&nbsp;&nbsp;interrupted&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;flag&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep ( 0 )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp;pcall(closeWindow)
&nbsp;&nbsp;&nbsp;&nbsp; message ( "SHUTDOWN" ,&nbsp;&nbsp;1 )
 end 

&nbsp;&nbsp;</pre>
=============
 <br />=============<br />причина зависания вероятнее всего в том,<br /> что функция main будет исполнена один раз до загрузки всех необходимых для корректной работы данных.<br />Предположу, что это ошибка автора &nbsp;скрипта, так как в нем не учитывается многопоточность. &nbsp; <br />
			<i>23.12.2022 10:43:37, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67718/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67718/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 10:43:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67716/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_N1juSRnM" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />Спасибо большое за пояснение!<br />=============<br /> &nbsp; &nbsp;Если код функции OnStop модифицировать следующим образом:<br />
====code====
<pre>
function OnStop(flag)
&nbsp;&nbsp;&nbsp;&nbsp;interrupted = true
&nbsp;&nbsp;&nbsp;&nbsp;message("OnStop executed", 1)
&nbsp;&nbsp;&nbsp;&nbsp;pcall(closeWindow)
end
</pre>
=============
<br /> &nbsp; то зависания не будет и, наверное, понятно почему. <br />
			<i>23.12.2022 10:25:57, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67716/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67716/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 10:25:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67705/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br />3) Что разработчики терминала могут сказать по этому поводу?<br />=============<br /><br />Осталось услышать комментарии от разработчиков / техподдержки. <br />
			<i>23.12.2022 06:09:26, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67705/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67705/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 06:09:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67704/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_xiECMdWa" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/115/" target="_blank" rel="nofollow">_sk_</a></noindex> написал:<br />Тут с OnStop какая-то проблема, как мне кажется.<br />=============<br /> &nbsp; &nbsp;Причину я описал в своем комментарии.<br /> В вашем скрипте эта причина проявляется следующим образом.<br />В цикле функции main есть два фрагмента кода с вызовами C-функций. Это sleep(0) и косвенно вызываемые (с помощью &nbsp;функции run()) стандартные функции работы с таблицами QUIK. &nbsp;При отключении sleep(0) остаются C-функции работы с таблицами QUIK. Поэтому OnStop запускается в потоке обработки колбеков (с выдачей сообщения &quot;OnStop executed&quot;). Но далее запускается pcall(closeWindow). &nbsp;В функции closeWindow отключается фрагмент работы с таблицами QUIK. Исполняемый код цикла функции main при этом представляет код на &quot;чистом Lua&quot;. &nbsp;Внутри исполнения pcall(closeWindow) существует вызов C-функции (я с этим уже разбираться не буду), при котором блокируется поток обработки колбеков, но отпускается поток main, где в цикле выполнения кода на &quot;чистом Lua&quot; блокируется поток выполняемый функцию OnStop. QUIK виснет.<br />=============<br />Спасибо большое за пояснение! <br />
			<i>23.12.2022 05:50:44, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67704/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67704/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 05:50:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67703/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_uI4LspiV" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />Я также проверял в терминале версии 9.7, там не было зависания почему-то.<br />=============<br /> &nbsp; Я проверил у себя в версии 9.7.0.14. &nbsp;Зависание есть. <br />
			<i>23.12.2022 00:23:55, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67703/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67703/topic7843/</guid>
			<pubDate>Fri, 23 Dec 2022 00:23:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67695/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_4mXCutUC" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />Тут с OnStop какая-то проблема, как мне кажется.<br />=============<br /> &nbsp; Причину я описал в своем комментарии.<br /> В вашем скрипте эта причина проявляется следующим образом.<br />В цикле функции main есть два фрагмента кода с вызовами C-функций. Это sleep(0) и косвенно вызываемые (с помощью &nbsp;функции run()) стандартные функции работы с таблицами QUIK. &nbsp;При отключении sleep(0) остаются C-функции работы с таблицами QUIK. Поэтому OnStop запускается в потоке обработки колбеков (с выдачей сообщения "OnStop executed"). Но далее запускается pcall(closeWindow). &nbsp;В функции closeWindow отключается фрагмент работы с таблицами QUIK. Исполняемый код цикла функции main при этом представляет код на "чистом Lua". &nbsp;Внутри исполнения pcall(closeWindow) существует вызов C-функции (я с этим уже разбираться не буду), при котором блокируется поток обработки колбеков, но отпускается поток main, где в цикле выполнения кода на "чистом Lua" блокируется поток выполняемый функцию OnStop. QUIK виснет. <br />
			<i>22.12.2022 16:49:14, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67695/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67695/topic7843/</guid>
			<pubDate>Thu, 22 Dec 2022 16:49:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67694/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_V75CgidD" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/115/" target="_blank" rel="nofollow">_sk_</a></noindex> написал:<br />2) Знает ли кто-то причину такого поведения?<br />=============<br /> &nbsp; &nbsp;Проверил у себя в песочнице 10.1. &nbsp;Ваш скрипт зависает при flag = false.<br /> &nbsp;Как известно, длинный участок фрагмента кода скрипта на &quot;чистом Lua&quot; в main (без вызова C-функций) блокирует выполнение потока обслуживающего колбеки.<br />Функция sleep(0) - это C-функция. &nbsp;Когда вы исключаете ее исполнение (в цикле), то получается бесконечный фрагмент скрипта на &quot;чистом Lua&quot; и OnStop, являющийся колбеком не может быть выполненным.<br />=============<br />Тут с OnStop какая-то проблема, как мне кажется.<br /><br />Заменяем фрагмент с кодом OnStop() вот на такое:<br /><br />
====code====
<pre>function OnAllTrade(t)
&nbsp;&nbsp;&nbsp;&nbsp;message("OnAllTrade", 1)
end

function OnStop(flag)
&nbsp;&nbsp;&nbsp;&nbsp;message("OnStop executed", 1)
&nbsp;&nbsp;&nbsp;&nbsp;pcall(closeWindow)
&nbsp;&nbsp;&nbsp;&nbsp;interrupted = true
end</pre>
=============
Проверяем ещё раз и видим, что:<br />1) коллбэки OnAllTrade выполняются (есть такие сообщения, если терминал получает обезличенные сделки);<br />2) при остановке скрипта терминал зависает, но при этом видно последнее сообщение &quot;OnStopExecuted&quot;.<br /><br />В принципе, вместо OnAllTrade можно любой другой коллбэк поставить (OnQuote, OnParam). <br />
			<i>22.12.2022 13:31:23, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67694/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67694/topic7843/</guid>
			<pubDate>Thu, 22 Dec 2022 13:31:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67693/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Спасибо. Я также проверял в терминале версии 9.7, там не было зависания почему-то. <br />
			<i>22.12.2022 13:13:43, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67693/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67693/topic7843/</guid>
			<pubDate>Thu, 22 Dec 2022 13:13:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67691/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_wPchnmZg" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />2) Знает ли кто-то причину такого поведения?<br />=============<br /> &nbsp; Проверил у себя в песочнице 10.1. &nbsp;Ваш скрипт зависает при flag = false.<br /> &nbsp;Как известно, длинный участок фрагмента кода скрипта на "чистом Lua" в main (без вызова C-функций) блокирует выполнение потока обслуживающего колбеки.<br />Функция sleep(0) - это C-функция. &nbsp;Когда вы исключаете ее исполнение (в цикле), то получается бесконечный фрагмент скрипта на "чистом Lua" и OnStop, являющийся колбеком не может быть выполненным. <br />
			<i>22.12.2022 12:21:48, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67691/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67691/topic7843/</guid>
			<pubDate>Thu, 22 Dec 2022 12:21:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Тест зависания терминала QUIK 10.0.1.18</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message67677/topic7843/">Тест зависания терминала QUIK 10.0.1.18</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Берём следующий скрипт. Если в первой строке стоит flag = true, то скрипт нормально запускается и останавливается из меню скриптов. Если в первой строке поставить flag = false, происходит зависание терминала при остановке скрипта. В зависимости от значения переменной flag либо имеется sleep(0) в функции main(), либо отсутствует на пути выполнения кода.<br /><br />У меня зависание воспроизводится в терминалах версий 10.0.0 и 10.0.1.<br /><br />Три вопроса:<br />1) Может ли кто-то ещё подтвердить, что зависание происходит (чтобы исключить особенность моего компьютера)?<br />2) Знает ли кто-то причину такого поведения?<br />3) Что разработчики терминала могут сказать по этому поводу?<br /><br />Сам скрипт:<br /><br />
====code====
<pre>local flag = true -- если установить в false, то при остановке скрипта происходит зависание (убирается sleep(0) в функции main)

local foregroundColor = RGB(0, 0, 0)
local backgroundColor = RGB(192, 255, 192)

local interrupted = false
local tableId

local function setTableColors(foregroundColor, backgroundColor)
&nbsp;&nbsp;&nbsp;&nbsp;local nRows, nCols = GetTableSize(tableId)
&nbsp;&nbsp;&nbsp;&nbsp;if nRows and nCols then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for row = 1, nRows do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for col = 1, nCols do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetColor(tableId, row, col,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backgroundColor, foregroundColor,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backgroundColor, foregroundColor)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
end

local function ensureWindowOpened()
&nbsp;&nbsp;&nbsp;&nbsp;if tableId == nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;if IsWindowClosed(tableId) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateWindow(tableId)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetWindowPos(tableId, 0, 0, 300, 100)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetWindowCaption(tableId, "hang_test")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertRow(tableId, 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertRow(tableId, 2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, 1, 1, "11")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, 1, 2, "12")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, 2, 1, "21")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetCell(tableId, 2, 2, "22")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetSelectedRow(tableId, 1)
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;setTableColors(foregroundColor, backgroundColor)
end

local function closeWindow()
&nbsp;&nbsp;&nbsp;&nbsp;local t = tableId
&nbsp;&nbsp;&nbsp;&nbsp;tableId = nil
&nbsp;&nbsp;&nbsp;&nbsp;if t then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DestroyTable(t)
&nbsp;&nbsp;&nbsp;&nbsp;end
end

function OnInit(scriptPath)
&nbsp;&nbsp;&nbsp;&nbsp;tableId = AllocTable()
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 1, "col1", true, QTABLE_STRING_TYPE, 5)
&nbsp;&nbsp;&nbsp;&nbsp;AddColumn(tableId, 2, "col2", true, QTABLE_STRING_TYPE, 5)
&nbsp;&nbsp;&nbsp;&nbsp;SetTableNotificationCallback(tableId, function(tId, msg, par1, _)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if msg == QTABLE_SELCHANGED then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetSelectedRow(tId, 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end)
&nbsp;&nbsp;&nbsp;&nbsp;ensureWindowOpened()
end

local function run()
&nbsp;&nbsp;&nbsp;&nbsp;ensureWindowOpened()
&nbsp;&nbsp;&nbsp;&nbsp;if tableId then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetSelectedRow(tableId, 2)
&nbsp;&nbsp;&nbsp;&nbsp;end
end

function OnStop(flag)
&nbsp;&nbsp;&nbsp;&nbsp;pcall(closeWindow)
&nbsp;&nbsp;&nbsp;&nbsp;interrupted = true
end

function main()
&nbsp;&nbsp;&nbsp;&nbsp;message("STARTED", 1)
&nbsp;&nbsp;&nbsp;&nbsp;while not interrupted do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if flag then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;pcall(closeWindow)
&nbsp;&nbsp;&nbsp;&nbsp;message("SHUTDOWN", 1)
end

</pre>
============= <br />
			<i>22.12.2022 07:27:24, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message67677/topic7843/</link>
			<guid>http://forum.quik.ru/messages/forum10/message67677/topic7843/</guid>
			<pubDate>Thu, 22 Dec 2022 07:27:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
