<?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>Mon, 11 May 2026 02:13:29 +0300</pubDate>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65575/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_uM6yZE4E" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Мой оппонент привел пример локальной переменной вне функций, т е это тоже не по теме, но эти локальные переменные являются копией глобальных<br />=============<br />Не являются копией глобальных. Объясняю, что chank оформляется как как функция, после чего выполняться. То есть мой предыдущий пример &quot;компилируется&quot; по смыслу в следующий код:<br />
====code====
<pre>function init_chank()
&nbsp;&nbsp;local Stopped = false

&nbsp;&nbsp;_G&#91;"main"&#93; = function()
&nbsp;&nbsp;&nbsp;&nbsp;while not Stopped do

&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;end

&nbsp;&nbsp;_G&#91;"OnStop"&#93; = function()
&nbsp;&nbsp;&nbsp;&nbsp;Stopped = true
&nbsp;&nbsp;end

end

init_chank()

</pre>
============= <br />
			<i>12.09.2022 20:10:35, Constantin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65575/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65575/topic7602/</guid>
			<pubDate>Mon, 12 Sep 2022 20:10:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65528/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			а также указал что closure вообще не причем в вопросе cинхронизации потоков колбеков и майн. <br />
			<i>11.09.2022 13:44:16, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65528/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65528/topic7602/</guid>
			<pubDate>Sun, 11 Sep 2022 13:44:16 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65527/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_zAdKySZu" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />По-моему, в этой ветке смешались разные смыслы слова &quot;захват&quot;.<br />1. Захват как контекст, как обрасть видимости, как closure<br />2. Захват как блокировка обращения к одной области памяти разными потоками.<br /><br />Про 2<br />Не важно как вы определили переменную, поступ и изменение её потокобезопасно в смысле структур Lua, в смысле корректности состояния переменной.<br />Если тут возникают проблемы и состояние переменной становится невалидным, то это однозначно ошибка QLua и её исправят.<br /><br />Про 1<br />Это чисто семантмческие моменты языка Lua, и, насколько я понял первое сообщение, вопрос совсем не про это.<br />=============<br />мой ответ касался п.2 в вопросе темы.<br />Мое мнение в том, что QLUA &nbsp;- это библиотеки функций и в ней нет необходимости синхронизации локальных переменных функций QLUA<br />т к локальные переменные функций - не являются общими main и колбеков.<br />-------------------<br />Мой оппонент привел пример локальной переменной вне функций, <br />т е это тоже не по теме, но эти локальные переменные являются копией глобальных<br />и их использование внутри колбеков или функций вне QLUA не требует их синхронизации<br /> т к в них копии глобальных переменных, которые и синхронизируются. &nbsp; <br />
			<i>11.09.2022 13:42:01, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65527/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65527/topic7602/</guid>
			<pubDate>Sun, 11 Sep 2022 13:42:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65526/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			По-моему, в этой ветке смешались разные смыслы слова "захват".<br />1. Захват как контекст, как обрасть видимости, как closure<br />2. Захват как блокировка обращения к одной области памяти разными потоками.<br /><br />Про 2<br />Не важно как вы определили переменную, поступ и изменение её потокобезопасно в смысле структур Lua, в смысле корректности состояния переменной.<br />Если тут возникают проблемы и состояние переменной становится невалидным, то это однозначно ошибка QLua и её исправят.<br /><br />Про 1<br />Это чисто семантмческие моменты языка Lua, и, насколько я понял первое сообщение, вопрос совсем не про это. <br />
			<i>11.09.2022 10:43:14, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65526/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65526/topic7602/</guid>
			<pubDate>Sun, 11 Sep 2022 10:43:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65521/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_BSHSLqyJ" href="/user/107/" bx-tooltip-user-id="107">Constantin</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />Замыкание связывает код функции с её лексическим окружением (местом, в котором она определена в коде). Лексические переменные замыкания отличаются от глобальных переменных тем, что они не занимают глобальное пространство имён. От переменных в объектах они отличаются тем, что привязаны к функциям, а не объектам.<br />=============<br /> Правильно. Всё тело файла кода, в луа, считается chunk. Переменные, помечены как local внутри chunk, захватываются функциями, когда эти функции определяются в chunk, и эти переменные разделяются между ними.<br /><br />На этом все.<br />=============<br />Т е согласны, что ваш пример не про захват, а про глобальную переменную.<br />Ничто ничего не захватывает, в буквальном смысле как Вы это понимаете.<br />А создается копия.<br />Поэтому локальная переменная сохраняет значение глобальной и не зависит от изменения глобальной, если это скаляр<br />а если это таблица то хранит ссылку на глобальную переменную, а не ее значение, а ссылка тоже не изменяется.<br />в итогу локальная переменная не изменяется при изменении глобальной<br />и синхронизация нужна лишь для глобальной. <br />
			<i>11.09.2022 08:23:44, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65521/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65521/topic7602/</guid>
			<pubDate>Sun, 11 Sep 2022 08:23:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65518/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_WIL8vGZI" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Замыкание связывает код функции с её лексическим окружением (местом, в котором она определена в коде). Лексические переменные замыкания отличаются от глобальных переменных тем, что они не занимают глобальное пространство имён. От переменных в объектах они отличаются тем, что привязаны к функциям, а не объектам.<br />=============<br />Правильно. Всё тело файла кода, в луа, считается chunk. Переменные, помечены как local внутри chunk, захватываются функциями, когда эти функции определяются в chunk, и эти переменные разделяются между ними.<br /><br />На этом все. <br />
			<i>10.09.2022 21:35:01, Constantin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65518/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65518/topic7602/</guid>
			<pubDate>Sat, 10 Sep 2022 21:35:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65511/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<p></p><B>Замыкание — это особый вид функции. </B><br /><B> Она определена в теле другой функции и создаётся каждый раз во время её выполнения.</B><br /> В записи это выглядит как функция, находящаяся целиком в теле другой функции.<br /> При этом вложенная внутренняя функция содержит ссылки на локальные переменные внешней функции.<br /> Каждый раз при выполнении внешней функции происходит создание нового экземпляра внутренней функции, с новыми ссылками на переменные внешней функции.<br />Замыкание связывает код функции с её лексическим окружением (местом, в котором она определена в коде).<br /> Лексические переменные замыкания отличаются от глобальных переменных тем, что они не занимают глобальное пространство имён. <br />От переменных в объектах они отличаются тем, что привязаны к функциям, а не объектам.<br />-------------------------<br /><noindex><a href="https://www.sbup.com/wiki/Замыкание_(программирование)" target="_blank" rel="nofollow">https://www.sbup.com/wiki/Замыкание_(программирование)</a></noindex><br /><br /><br /><p></p> <br />
			<i>10.09.2022 08:50:53, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65511/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65511/topic7602/</guid>
			<pubDate>Sat, 10 Sep 2022 08:50:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65509/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/user/107/" target="_blank" rel="nofollow">Constantin</a></noindex>,<br />Вы неправильно понимаете механизм замыкания.<br />Ваш пример 
====code====
<pre>local Stopped = false

function main()
&nbsp;&nbsp;while not Stopped do

&nbsp;&nbsp;end
end

function OnStop()
 Stopped = true
end</pre>
=============
<br />не является замыканием, так как при выходе из функции, значение Stopped не сохраняется в ней для последующего использования.<br />Это глобальная переменная и она может быть изменена вне функции, что у Вас и делается.<br />---------------------- <br />Пример замыкания Вы можете изучить в скриптах индикаторов, которые предлагаются разработчиками &nbsp;КВИК.<br />Например этот:<br />
====code====
<pre>function AD() --Accumulation/Distribution ("AD")
&nbsp;&nbsp;&nbsp;local tmp = {pp=nil, p=nil}
&nbsp;&nbsp;&nbsp;local it = {p=0, l=0}
return function (I, Fsettings, ds)
&nbsp;&nbsp;&nbsp;if I == 1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp = {pp=nil, p=nil}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it = {p=0, l=0}
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;if CandleExist(I,ds) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if I~=it.p then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it={p=I, l=it.l+1}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp.pp = tmp.p
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local CLH=(2*GetValueEX(it.p,CLOSE,ds)-GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds))*GetValueEX(it.p,VOLUME,ds)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local HL=GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if HL==0 then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp.p = tmp.pp or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp.p = CLH/HL + (tmp.pp or 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if it.l==1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if HL == 0 then return 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else return CLH/HL end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return tmp.p
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
return nil
end
end
</pre>
=============
это замыкание:
====code====
<pre>&nbsp;&nbsp;&nbsp;local tmp = {pp=nil, p=nil}
&nbsp;&nbsp;&nbsp;local it = {p=0, l=0}
return function (I, Fsettings, ds)</pre>
============= <br />
			<i>10.09.2022 08:28:15, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65509/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65509/topic7602/</guid>
			<pubDate>Sat, 10 Sep 2022 08:28:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65508/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_6xY9Ehap" href="/user/107/" bx-tooltip-user-id="107">Constantin</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />это вообще не о том.<br />=============<br /> <br />Да нет. На примере, Stopped.<br /><br />Вариант 1<br /> 
====code====
<pre>&nbsp;&nbsp;Stopped&nbsp;&nbsp;=&nbsp;&nbsp; false 

 function&nbsp;&nbsp; main ()
&nbsp;&nbsp; while&nbsp;&nbsp; not&nbsp;&nbsp;Stopped&nbsp;&nbsp;do 

&nbsp;&nbsp; end 
 end 

 function&nbsp;&nbsp; OnStop ()
&nbsp;&nbsp;Stopped&nbsp;&nbsp;=&nbsp;&nbsp; true 
 end&nbsp;&nbsp; </pre>
=============
 Здесь переменная глобальная и обе функции к ней обращаются через _G.<br /><br />Вариант 2<br /> 
====code====
<pre>&nbsp;&nbsp; local&nbsp;&nbsp;Stopped&nbsp;&nbsp;=&nbsp;&nbsp; false 

 function&nbsp;&nbsp; main ()
&nbsp;&nbsp; while&nbsp;&nbsp; not&nbsp;&nbsp;Stopped&nbsp;&nbsp;do 

&nbsp;&nbsp; end 
 end 

 function&nbsp;&nbsp; OnStop ()
 Stopped&nbsp;&nbsp;=&nbsp;&nbsp; true 
 end&nbsp;&nbsp; </pre>
=============
 Здесь переменная захвачена обеими функциями и доступ к ней идёт через другой механизм. Вот он учитывает, что функции выполняются в разных потоках?<br />=============<br />пока это лишь Ваше предположение.<br />Можете привести доказательство своего предположения?<br />=================<br />Я предположу, <br />что и в первом и во втором случае используется глобальный стек.<br />---------------------------<br />Но для хранения локальной общей &nbsp;переменной создан общий блок в глобальном стеке. <br />---------------------------<br />Т к указатель на локальный стек передается в функцию при ее вызове<br />В данном случае никаких вызовов при создании данной переменной нет.<br />-----------------------------------<br />И уж тем более - этот никакой не захват,<br /> в классическом понимании этого механизма ,<br /> так как он реализуется внутри функций,<br />а в данном случае - это классическая глобальная переменная.<br />------------------------<br />если будет настроение напишу тест . <br />
			<i>10.09.2022 07:24:52, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65508/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65508/topic7602/</guid>
			<pubDate>Sat, 10 Sep 2022 07:24:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65502/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_VoqDkv0G" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />это вообще не о том.<br />=============<br /><br />Да нет. На примере, Stopped.<br /><br />Вариант 1<br />
====code====
<pre>Stopped = false

function main()
&nbsp;&nbsp;while not Stopped do

&nbsp;&nbsp;end
end

function OnStop()
&nbsp;&nbsp;Stopped = true
end</pre>
=============
Здесь переменная глобальная и обе функции к ней обращаются через _G.<br /><br />Вариант 2<br />
====code====
<pre>local Stopped = false

function main()
&nbsp;&nbsp;while not Stopped do

&nbsp;&nbsp;end
end

function OnStop()
 Stopped = true
end</pre>
=============
Здесь переменная захвачена обеими функциями и доступ к ней идёт через другой механизм. Вот он учитывает, что функции выполняются в разных потоках? <br />
			<i>09.09.2022 17:23:06, Constantin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65502/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65502/topic7602/</guid>
			<pubDate>Fri, 09 Sep 2022 17:23:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65376/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			и еще про closure :<br />&quot; Внутренняя функция всегда обращается к свободным переменным (которые называют &quot;внешними локальными переменными&quot;) косвенно через структуру, <br />называемую &quot;upval&quot;, используя инструкции GETUPVAL и SETUPVAL .<br /> Пока включающая функция активна, upval указывает на слот локальной переменной в стеке<br /> (хотя Lua является виртуальной машиной на основе регистров, она использует стек внутри) <br />Это удобно, потому что заключающей функции не нужно беспокоиться о том, является ли переменная частью замыкания или нет. <br />Когда функция возвращается, она копирует локальные переменные в элемент структуры upval и указывает на это upval. <br />Upval сохраняется до тех пор, пока на него больше никто не ссылается, и в этот момент он может быть собран для сбора мусора. <br />
			<i>06.09.2022 07:09:57, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65376/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65376/topic7602/</guid>
			<pubDate>Tue, 06 Sep 2022 07:09:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65375/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_GL3Ixv6y" href="/user/107/" bx-tooltip-user-id="107">Constantin</a> написал:<br />nikolz<br /><br />Так захват переменной, он же closure.<br />=============<br />это вообще не о том.<br />-------------<br />Объясняю...<br />--------------<br />Если функции передается значение скалярной переменной, то <br />при входе внутрь функций луа всегда происходит создание копии скалярной переменной.<br />В отличии от СИ, в луа нельзя передать указатель на скаляр. <br />-----------------<br />Т е если &nbsp;Вы присваиваете локальной переменной глобальную, то значение глобальной копируется в локальную.<br />-------------------<br />В этом месте теоретически синхронизация для глобальной переменной нужна, <br />но так как вы читаете, то эта синхронизация не имеет практического смысла. <br />----------------------<br />После этого в локальной переменной у вас копия и никакая синхронизация не требуется,<br />а изменение локальной не меняет глобальную.<br />=============== &nbsp;<br />когда локальной переменной вы присваиваете таблицу<br /> то в локальную записывается указатель &nbsp;глобальной.<br />синхронизация опять же будет для глобальной, а не для локальной переменной.<br />================ <br />Таким образом, в любом случае локальная переменная у Вас недоступна из других потоков и ее синхронизация не требуется.<br />================ <br />а closure &nbsp; это сохранение переданного значения функции вне стека функции. <br />И при новом &nbsp;входе в функцию эти значения &nbsp;могут быть использованы.<br />Но эти значения внутри потока функции и они не доступны по указателю в других потоках.<br />========================<br />Поэтому closure - это о сохранении значений внутренних переменных функции при выходе из области видимости этой функции.<br />читаем документацию:<br /><B>&quot;замыкание - это функция плюс все, что ей нужно для правильного доступа к своим значениям...</B><br /><B>Технически говоря, значение в Lua - это замыкание, а не функция. Сама функция является всего лишь прототипом для замыканий.&quot;</B><br />=============== <br />
			<i>06.09.2022 07:00:13, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65375/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65375/topic7602/</guid>
			<pubDate>Tue, 06 Sep 2022 07:00:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65369/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			nikolz<br /><br />Так захват переменной, он же closure. <br />
			<i>05.09.2022 20:32:24, Constantin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65369/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65369/topic7602/</guid>
			<pubDate>Mon, 05 Sep 2022 20:32:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65366/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_76kq7dAa" href="/user/107/" bx-tooltip-user-id="107">Constantin</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />так как вы не сможете обратиться к локальным переменным майн из колбека и наоборот.<br />=============<br /> Так &quot;глобальная&quot; переменная, объявленная с local вне функций, захватывается разными функциями и становится для них &quot;локальной&quot;. &nbsp;<br />=============<br />Вы это сами придумали или где прочитали?<br />Вы хотя бы поняли, что написали?<br />-----------------------------------------------<br />Если Вы локальной переменной присваиваете значение глобальной, <br />то будет выполнено копирование &nbsp;значения для скалярной величины и копирование указателя для таблицы.<br />--------------------<br />Поэтому никто ничего не захватывает и ничем не становится. &nbsp; <br />
			<i>05.09.2022 20:24:53, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65366/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65366/topic7602/</guid>
			<pubDate>Mon, 05 Sep 2022 20:24:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65365/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_0ag7d3ju" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />так как вы не сможете обратиться к локальным переменным майн из колбека и наоборот.<br />=============<br />Так &quot;глобальная&quot; переменная, объявленная с local вне функций, захватывается разными функциями и становится для них &quot;локальной&quot;. &nbsp; <br />
			<i>05.09.2022 20:06:45, Constantin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65365/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65365/topic7602/</guid>
			<pubDate>Mon, 05 Sep 2022 20:06:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65355/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Fsk9s1D6" href="/user/107/" bx-tooltip-user-id="107">Constantin</a> написал:<br />Подскажите:<br /><br />1. В main() можно использовать функции получения данных от Квика, которые обычно используются в колбаках? Такие как getParamEx(), getLevel2Quotes() и т.д.<br /><br />2. QLua нормально синхронизирует обращение к переменным, помеченным как local, если к ним идет доступ и из потока колбаков, и из потока main?<br />=============<br />main и колбеки имеют общий глобальный стек VMLua.<br />Поэтому есть синхронизация обращения к глобальным пере5менным.<br />Кроме того, обращение к глобальным переменным в кобеке приводит к блокировке main при обращении к этим же переменным.<br />Т е колбеки и main в этой ситуации работают последовательно.<br />--------------------<br />локальные стеки у них разные. поэтому синхронизация не требуется ,<br />так как вы не сможете обратиться к локальным переменным майн из колбека и наоборот. <br />
			<i>05.09.2022 06:26:27, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65355/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65355/topic7602/</guid>
			<pubDate>Mon, 05 Sep 2022 06:26:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65353/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			1. Эти функции в первую очередь предназначены для использования внутри main(). В колбеках их можно использовать, но идеологически это неправильно.<br /><br />2. синхронизация на уровне оператора присваивания значений переменным синхронизирована. Глобальная или локальная переменная - разницы нет. Проблемы с синхронизацией обычно начинаются при попытках одновременно изменять поля таблиц из колбеков и main(). Потом окажется, что не все стандартные функции потокобезопасны. Этот список вы потом дополните сами. <br />
			<i>04.09.2022 17:16:05, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65353/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65353/topic7602/</guid>
			<pubDate>Sun, 04 Sep 2022 17:16:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>main()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message65352/topic7602/">main()</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Подскажите:<br /><br />1. В main() можно использовать функции получения данных от Квика, которые обычно используются в колбаках? Такие как getParamEx(), getLevel2Quotes() и т.д.<br /><br />2. QLua нормально синхронизирует обращение к переменным, помеченным как local, если к ним идет доступ и из потока колбаков, и из потока main? <br />
			<i>04.09.2022 14:54:51, Constantin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message65352/topic7602/</link>
			<guid>http://forum.quik.ru/messages/forum10/message65352/topic7602/</guid>
			<pubDate>Sun, 04 Sep 2022 14:54:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
