<?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, 05 May 2026 11:29:04 +0300</pubDate>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75395/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Ar9rd51h" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />так как вызов функции getQuoteLevel2 существенно меньше рисования стаканов.<br />=============<br /> А у Вас обработка сравнима по времени с getQuoteLevel2 и другими необходимыми Вам вызовами qlua? Я тестирую на том, чем сам потом пользоваться буду, для меня пока нет разницы. В очереди для стаканов не вижу смысла, кстати, я просто хэш-таблицу заюзаю с ключами по sec и содержимым sent,updates,received,стакан.<br />=============<br />Обработка сравнима.<br />Создаю потоки из пула системных потоков и в них запускаю Luajit (из всего, что пробовал это быстрее всех работает). &nbsp;<br />В указанном ранее тесте в отдельные моменты создавалось максимум 11 потоков.<br />------------------ &nbsp;<br />Я не рисую стаканы. Скальпингом не занимаюсь. &nbsp;<br />Использовал стакан при реализации алгоритма закрытия позиции по стопу. &nbsp;<br />Но в основном использую либо лучшие предложения либо по рынку, так как торгую лишь ликвидными акциями. <br />
			<i>24.04.2024 21:13:26, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75395/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75395/topic8601/</guid>
			<pubDate>Wed, 24 Apr 2024 21:13:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75391/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_PNjrQxCv" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />так как вызов функции getQuoteLevel2 существенно меньше рисования стаканов.<br />=============<br />А у Вас обработка сравнима по времени с getQuoteLevel2 и другими необходимыми Вам вызовами qlua? Я тестирую на том, чем сам потом пользоваться буду, для меня пока нет разницы. В очереди для стаканов не вижу смысла, кстати, я просто хэш-таблицу заюзаю с ключами по sec и содержимым sent,updates,received,стакан. <br />
			<i>24.04.2024 16:41:58, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75391/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75391/topic8601/</guid>
			<pubDate>Wed, 24 Apr 2024 16:41:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75388/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Ra4RDW5l" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />Есть варианты алгоритма теста?<br />=============<br /> Я провёл тест, который не выявил разницы. Может быть, getQuoteLevel2 не нужна синхронизация? Запустил два почти одинаковых скрипта, рисующих стакан каждый в своём потоке (настроено так, чтобы гуи рисовался в main скрипта, а не в главном потоке квика). Ниже часть кода одного из скриптов с комментами про замены, чтобы получить второй скрипт. Единственная стабильная разница, что вызов в main даёт на 1 секунду больше CPU time, хотя этот скрипт был запущен на 4 секунды позже (запускал в дневной клиринг, как видно на скрине, чтобы не было обновлений стакана на срочке)<br />
====code====
<pre>&nbsp;&nbsp;</pre>
=============
 <br />=============<br />Мы с Вам о принципиально разных решениях говорим. <br />--------------------------------------<br />В вашем тесте - один инструмент, стакан которого вы рисуете. <br />В этом случае Вы не заметите разницы, <br />так как вызов функции getQuoteLevel2 существенно меньше рисования стаканов. <br />============== &nbsp;<br />Моя постановка задачи для теста такая. <br />----------------------<br />Торгуется портфель инструментов.<br />Поток main работает по событиям. <br />Все события формируют очередь(может быть несколько очередей)<br />----------------<br />1) В этом случае, если &nbsp;getQuoteLevel2 &nbsp;вызывать в колбеке, то в очередь попадет весь стакан и clas и sec. <br />Т е время работы колбека всегда будет включать запрос стакана.<br />=========<br />2) Если в колбеке не запрашивать стакан, то в очередь запишется clas и sec. <br />Т е время работы колбека будет меньше всегда, чем в первом случае.<br />--------------------<br />В main будет вызываться функция getQuoteLevel2 .<br /> Она находится в глобальном стеке и обращение к ней уже синхронизировано в библиотеке QLUA.<br />Но так как к ней никто вне main не обращается, то ее вызов не будет ничего тормозить и ничего блокировать не надо.<br />------------------<br />Если рынок очень активен, <br />то в первом варианте Вы получите целую толпу стаканов, которые уже устарели.<br />---------------------<br />Во втором варианте в очереди будет всего один колбек и в main будет прочитан самый последний стакан.<br />--------------------<br />У меня робот работает именно так. <br />
			<i>24.04.2024 15:38:59, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75388/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75388/topic8601/</guid>
			<pubDate>Wed, 24 Apr 2024 15:38:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75387/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_h4QV0BLR" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Есть варианты алгоритма теста?<br />=============<br />Я провёл тест, который не выявил разницы. Может быть, getQuoteLevel2 не нужна синхронизация? Запустил два почти одинаковых скрипта, рисующих стакан каждый в своём потоке (настроено так, чтобы гуи рисовался в main скрипта, а не в главном потоке квика). Ниже часть кода одного из скриптов с комментами про замены, чтобы получить второй скрипт. Единственная стабильная разница, что вызов в main даёт на 1 секунду больше CPU time, хотя этот скрипт был запущен на 4 секунды позже (запускал в дневной клиринг, как видно на скрине, чтобы не было обновлений стакана на срочке)<br /><br />
====code====
<pre>local cols, qt
local sent, received, updates = 0, 0, 0
function OnQuote(class_code, sec_code)
&nbsp;&nbsp;-- отслеживаем котировки только по указанному инструменту
&nbsp;&nbsp;if (class_code ~= CLASS) or (sec_code ~= SEC) then
&nbsp;&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;end
&nbsp;&nbsp;qt = getQuoteLevel2(class_code, sec_code) -- во втором скрипте убрать эту строку
&nbsp;&nbsp;sent = sent + 1
end

local fmt = string.format
local function updateGrid()
&nbsp;&nbsp;local s = sent
&nbsp;&nbsp;if received &#60; s then
&nbsp;&nbsp;&nbsp;&nbsp;received = s
&nbsp;&nbsp;&nbsp;&nbsp;fillCols(qt) -- во втором скрипте заменить на fillCols(getQuoteLevel2(CLASS, SEC))
&nbsp;&nbsp;&nbsp;&nbsp;updates = updates + 1
&nbsp;&nbsp;&nbsp;&nbsp;grid:BeginUpdate()
&nbsp;&nbsp;&nbsp;&nbsp;colors = cols.colors -- cols заполняется внутри fillCols, colors используется при рисовании стакана внутри grid.OnPrepareCanvas (не показано тут)
&nbsp;&nbsp;&nbsp;&nbsp;grid:SetCells(0,1,s) -- число вызовов OnQuote
&nbsp;&nbsp;&nbsp;&nbsp;grid:SetCells(0,2,updates) -- число отрисовок стакана
&nbsp;&nbsp;&nbsp;&nbsp;grid:SetCells(0,3,fmt('%.1f%%',(1-updates/s)*100)) -- процент потерь обновлений OnQuote
&nbsp;&nbsp;&nbsp;&nbsp;local m,ti,mti = VCL.IsMultiThread()
&nbsp;&nbsp;&nbsp;&nbsp;grid:SetCells(0,4,tostring(m)) -- System.isMultiThread
&nbsp;&nbsp;&nbsp;&nbsp;grid:SetCells(0,5,tostring(ti)) -- ThreadId
&nbsp;&nbsp;&nbsp;&nbsp;grid:SetCells(0,6,tostring(mti)) -- MainThreadId
&nbsp;&nbsp;&nbsp;&nbsp;for c = 0,2 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for r,str in pairs(cols&#91;c&#93;) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grid:SetCells(c,r,str)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;grid:EndUpdate()
&nbsp;&nbsp;end
end

is_run = true
function main()
&nbsp;&nbsp;&nbsp;&nbsp;CreateAndShow()
&nbsp;&nbsp;&nbsp;&nbsp;while is_run do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateGrid()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app:ProcessMessages()
&nbsp;&nbsp;&nbsp;&nbsp;end
end
</pre>
============= <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=11943&" width="3051" height="1084" /><br /><i>24.04.2024 15:06:16, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75387/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75387/topic8601/</guid>
			<pubDate>Wed, 24 Apr 2024 15:06:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75273/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_10MChdpw" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />что не так?<br />=============<br /> не хватает только теста под реальной нагрузкой для учёта эффекта синхронизаций<br />=============<br />Пока не придумал. Есть варианты алгоритма теста? <br />
			<i>18.04.2024 08:03:17, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75273/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75273/topic8601/</guid>
			<pubDate>Thu, 18 Apr 2024 08:03:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75271/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_5LUzt3VG" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />что не так?<br />=============<br />не хватает только теста под реальной нагрузкой для учёта эффекта синхронизаций <br />
			<i>17.04.2024 16:35:39, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75271/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75271/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 16:35:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75270/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/user/15910/" target="_blank" rel="nofollow">Serge123</a></noindex>,<br />Придумал лишь одно объяснение Вашему примеру, где не изменяются ни время ни цена.<br />Это возможно в режиме договорной сделки. &nbsp;<br />Когда через биржу один крупный игрок продает конкретно другому игроку большой объем, например, сделка РЕПО.<br />Но это лишь мое предположение.<br />------------------ <br />
			<i>17.04.2024 15:55:00, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75270/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75270/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 15:55:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75269/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_SemDd9mx" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex>, ну вот да, поэтому у меня и вопрос, что больше тормозит главный поток квика -- вызов qlua функций из колбэков или из main с синхронизацией. Если число таких вызовов одинаково (что бывает, если main обрабатывает данные быстрее, чем они поступают), должно получиться, что тормозить больше будут вызовы из main, потому что число синхронизаций вырастет. Если же main не успевает за колбэками, и можно не все данные колбэков обрабатывать, то вызов qlua в main может быть быстрее, чем в колбэках, просто потому, что вызовов будет меньше, но накладные расходы на синхронизацию могут всё равно свести преимущество на нет. Поэтому и вопрос был, есть ли у Вас тест на это.<br />=============<br />Рассмотрим два варианта<br />В первом колбек читает стаканы &nbsp;и помещаются в очередь их вместе с clas и sec.<br />main читает стаканы из очереди, при этом main еще читает из очереди clas и sec.<br />--------------------<br />Во втором колбек помещает в очередь clas и sec<br />main &nbsp;читает clas и sec и &nbsp;если надо, то читает стаканы.<br />---------------------<br />Полагаю, что второй вариант бесспорно лучше. <br />Второй вариант будет еще в разы лучше, <br />если вместо sleep использовать event.<br />--------------------<br />что не так? <br />
			<i>17.04.2024 15:51:07, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75269/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75269/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 15:51:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75268/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_h4IWhBc1" href="/user/62/" bx-tooltip-user-id="62">nikolz</a>, ну вот да, поэтому у меня и вопрос, что больше тормозит главный поток квика -- вызов qlua функций из колбэков или из main с синхронизацией. Если число таких вызовов одинаково (что бывает, если main обрабатывает данные быстрее, чем они поступают), должно получиться, что тормозить больше будут вызовы из main, потому что число синхронизаций вырастет. Если же main не успевает за колбэками, и можно не все данные колбэков обрабатывать, то вызов qlua в main может быть быстрее, чем в колбэках, просто потому, что вызовов будет меньше, но накладные расходы на синхронизацию могут всё равно свести преимущество на нет. Поэтому и вопрос был, есть ли у Вас тест на это. <br />
			<i>17.04.2024 14:43:55, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75268/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75268/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 14:43:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75266/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/user/15910/" target="_blank" rel="nofollow">Serge123</a></noindex>,<br />Относительно очистки памяти при выходе из функции или удалении таблицы,<br />-----------------<br />Сборщик мусора работает по определенному алгоритму у которого есть настраиваемые параметры.<br />-------------------<br />Чтобы увидеть уменьшение занятой памяти надо запустить сборщик принудительно. <br /> пример:
====code====
<pre>local M=10000000
local t={}
count1 = collectgarbage("count") print("объем занятой памяти",count1//1);
for i=1, M do t&#91;i&#93;=i end
count1 = collectgarbage("count") print("объем занятой памяти массивом",count1//1);
t=nil&nbsp;&nbsp;-- удаляем массив
count1 = collectgarbage("count") print("объем занятой памяти после удаления массива ",count1//1);
collectgarbage("collect") count1 = collectgarbage("count") print("объем занятой памяти после сборщика массива ",count1//1);
os.exit()



</pre>
=============
результат:
====code====
<pre>&#62;D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "Test.lua" 
объем занятой памяти&nbsp;&nbsp;&nbsp;58.0
объем занятой памяти массивом&nbsp;&nbsp;&nbsp;262202.0
объем занятой памяти после удаления массива &nbsp;&nbsp;&nbsp;262199.0
объем занятой памяти после сборщика массива &nbsp;&nbsp;&nbsp;50.0
&#62;Exit code: 0
</pre>
============= <br />
			<i>17.04.2024 13:01:49, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75266/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75266/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 13:01:49 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75265/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			и еще...<br />Я как-то выкладывал результаты теста, в котором видно, что колбеки тормозят &nbsp;main поток. <br />
			<i>17.04.2024 12:51:27, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75265/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75265/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 12:51:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75264/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Y7Pg10pu" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />getQuoteLevel2 лучше вызывать в main, чтобы не тормозить основной поток.<br />=============<br /> У Вас есть какой-нибудь скрипт, подтверждающий это?<br /><br />Я когда дампил квик через procdump, постоянно видел, что вызовы qlua (типа SetEmptyCallback) из main стояли на входе в критическую секцию, а вот вызовы из главного потока - никогда.<br />=============<br />Вес функции qlua в основном стеке. <br />Основной стек в главном потоке.<br />стек main - это дополнительный стек.<br />колбеки блокируют доступ main к &nbsp;глобальному стеку.<br />Поэтому вызов функций qlua в колбеках не требует дополнительной синхронизации. Ее уже сделали при вызове колбека &nbsp; <br />
			<i>17.04.2024 12:45:55, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75264/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75264/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 12:45:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75263/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_re62z9sn" href="/user/15910/" bx-tooltip-user-id="15910">Serge123</a> написал:<br />Интересно: как можно проверить, что мой вариант скрипта, в котором я перенёс обработку стаканов и обезл. сделок в main, имеет смысл? Мне кажется, что добавилось лишней работы в потоке main с разбором очереди, а в потоке Квика работа уменьшилась неощутимо...<br />=============<br />Вы правильно мыслите.<br />Если хотите получить эффект, то надо убирать sleep и &nbsp;использовать event. <br />
			<i>17.04.2024 12:41:16, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75263/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75263/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 12:41:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75262/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Пардон, ответил не на тот вопрос. <br />
			<i>17.04.2024 12:39:05, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75262/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75262/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 12:39:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75261/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_jW4xpDBU" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />getQuoteLevel2 лучше вызывать в main, чтобы не тормозить основной поток.<br />=============<br /> У Вас есть какой-нибудь скрипт, подтверждающий это?<br /><br />Я когда дампил квик через procdump, постоянно видел, что вызовы qlua (типа SetEmptyCallback) из main стояли на входе в критическую секцию, а вот вызовы из главного потока - никогда.<br />=============<br />Это написано в документации.<br />Могу объяснить на коде почему это так.<br />----------------- <br />Кроме того, если эта таблица создана глобально, то она будет всегда, если вы явно не присвоите ей nil.<br />------------------<br />Проверить можно на СИ.<br />Могу рассказать как. <br />
			<i>17.04.2024 12:37:26, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75261/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75261/topic8601/</guid>
			<pubDate>Wed, 17 Apr 2024 12:37:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75255/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Интересно: как можно проверить, что мой вариант скрипта, в котором я перенёс обработку стаканов и обезл. сделок в main, имеет смысл? Мне кажется, что добавилось лишней работы в потоке main с разбором очереди, а в потоке Квика работа уменьшилась неощутимо... <br />
			<i>16.04.2024 14:46:10, Serge123.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75255/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75255/topic8601/</guid>
			<pubDate>Tue, 16 Apr 2024 14:46:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75254/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_y6tMe0s1" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />getQuoteLevel2 лучше вызывать в main, чтобы не тормозить основной поток.<br />=============<br />У Вас есть какой-нибудь скрипт, подтверждающий это?<br /><br />Я когда дампил квик через procdump, постоянно видел, что вызовы qlua (типа SetEmptyCallback) из main стояли на входе в критическую секцию, а вот вызовы из главного потока - никогда. <br />
			<i>16.04.2024 13:16:47, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75254/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75254/topic8601/</guid>
			<pubDate>Tue, 16 Apr 2024 13:16:47 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75248/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			getQuoteLevel2 лучше вызывать в main, чтобы не тормозить основной поток. <br />
			<i>16.04.2024 08:50:45, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75248/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75248/topic8601/</guid>
			<pubDate>Tue, 16 Apr 2024 08:50:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75247/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_gUXO9kEi" href="/user/15910/" bx-tooltip-user-id="15910">Serge123</a> написал:<br />Смутно помнится, в документации на lua.org я видел, что жизнь таблицы из параметров функции гарантируется до выхода из этой функции (т.е. до выхода из OnAllTrade). Какая-то ерунда пока получается с этим переносом обработки таблиц в поток main...<br />=============<br />Жизнь локальных параметров прекращается с выходом из функции.<br />А таблица, которую Вы передали через фактические параметры в функцию создана вне этой функции.<br />поэтому она будет утилизирована лишь когда на нее не будет ссылок вообще.<br />Когда вы ее указатель помещаете в очередь, а очередь существует вне функции, то таблица живет своей жизнью и дальше. <br />
			<i>16.04.2024 08:45:33, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75247/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75247/topic8601/</guid>
			<pubDate>Tue, 16 Apr 2024 08:45:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75244/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Работает, но память, занимаемая скриптом, понемногу растёт, хотя, я после обработки в main таблиц из очереди записываю на место ссылок на них false.<br /><br />И на мой сегодняшний вопрос в <noindex><a href="https://forum.quik.ru/forum10/topic8600/" target="_blank" rel="nofollow">https://forum.quik.ru/forum10/topic8600/</a></noindex> так никто и не ответил, видно, не знают, что сказать... &nbsp;<img src="http://forum.quik.ru/upload/main/smiles/5/icon_confuse.png" border="0" data-code=":what:" data-definition="SD" alt=":what:" style="width:16px;height:16px;" title="Озадаченно" class="bx-smile" /> &nbsp; <br />
			<i>15.04.2024 23:54:38, Serge123.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75244/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75244/topic8601/</guid>
			<pubDate>Mon, 15 Apr 2024 23:54:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75243/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Bji4Hlle" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br />Объекты живут, пока на них есть ссылки.<br />=============<br />Похоже, что всё хорошо: переделал скрипт, чтобы он обрабатывал очередь от коллбэков в main, всё работает. <br />
			<i>15.04.2024 23:48:46, Serge123.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75243/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75243/topic8601/</guid>
			<pubDate>Mon, 15 Apr 2024 23:48:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75242/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Объекты живут, пока на них есть ссылки. Покуда слот в очереди указывает на эту таблицу, она жива. <br />
			<i>15.04.2024 23:32:44, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75242/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75242/topic8601/</guid>
			<pubDate>Mon, 15 Apr 2024 23:32:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75239/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Смутно помнится, в документации на lua.org я видел, что жизнь таблицы из параметров функции гарантируется до выхода из этой функции (т.е. до выхода из OnAllTrade). Какая-то ерунда пока получается с этим переносом обработки таблиц в поток main... <br />
			<i>15.04.2024 19:14:22, Serge123.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75239/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75239/topic8601/</guid>
			<pubDate>Mon, 15 Apr 2024 19:14:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>До каких пор живёт таблица, передаваемая функции?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message75238/topic8601/">До каких пор живёт таблица, передаваемая функции?</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Пытаюсь перенести обработку OnQuote и OnAllTrade в поток main. C OnAllTrade приходит ссылка на таблицу alltrade:
====code====
<pre>function OnAllTrade(alltrade)
</pre>
=============
Сама таблица alltrade находится в стеке вызова этого коллбэка (очевидно, в стеке тоже ссылка, а сама таблица ещё где-нибудь?)<br /><br />Если я эту ссылку на alltrade помещу в очередь и выйду из OnAllTrade, то не получится ли так, что после выхода из OnAllTrade эта таблица окажется мусором?<br /><br />Аналогичный вопрос с OnQuote, которая вызывает getQuoteLevel2 и помещает возвращаемую ей таблицу (ссылку на неё) в ту же очередь для обработки в main.<br /><br />Мне что, перед выходом из этих функций отключать сборку мусора, а после обработки всей очереди в main опять включать?? <br />
			<i>15.04.2024 19:10:29, Serge123.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message75238/topic8601/</link>
			<guid>http://forum.quik.ru/messages/forum10/message75238/topic8601/</guid>
			<pubDate>Mon, 15 Apr 2024 19:10:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
