<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Lua Dll на C++]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Lua Dll на C++ форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 26 Apr 2026 23:11:28 +0300</pubDate>
		<item>
			<title>Lua Dll на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28797/topic3318/">Lua Dll на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<B>Рекомендую</B> проштудировать книгу <br /><B>Дж.Рихтер Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows</B><br />В ней есть ответы на все Ваши вопросы с примерами и готовыми решениями. <br />
			<i>26.01.2018 20:35:13, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28797/topic3318/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28797/topic3318/</guid>
			<pubDate>Fri, 26 Jan 2018 20:35:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Lua Dll на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28620/topic3318/">Lua Dll на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			lua_newthread создает Lua thread, которая не является thread (потоком) операционной системы. В документации, когда пишут, что main и OnXXX вызываются на разных потоках (thread), речь идет о настоящих потоках операционной системы. <br />Самый короткая и полезная формулировка на этот счет: <noindex><a href="https://stackoverflow.com/questions/17817452/lua-5-2-2-broken-threading-system/17818481#17818481" target="_blank" rel="nofollow">https://stackoverflow.com/questions/17817452/lua-5-2-2-broken-threading-system/17818481#17818481</a></noindex><br />Возможно, стоит предложить добавить в документацию уточненения, о каких потоках идет речь, если они употребляют слово &quot;поток&quot;. <br /><br />Нет никаких гарантий, что lua_State* для OnXxx будет оставаться тем же, например разработчики, могут начать синхронизировать потоки каким-нибудь изысканным способом, который в итоге поменяет указатель на эту структуру. Поэтому безопаснее не кешировать эти указатели в своих объектах, тем более что это ничего не стоит. Более подробные соображения по этому поводу тут: <noindex><a href="https://github.com/elelel/qluacpp-tutorial/issues/5" target="_blank" rel="nofollow">https://github.com/elelel/qluacpp-tutorial/issues/5</a></noindex> <br />
			<i>14.01.2018 14:47:32, El El.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28620/topic3318/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28620/topic3318/</guid>
			<pubDate>Sun, 14 Jan 2018 14:47:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Lua Dll на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28615/topic3318/">Lua Dll на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_beELom8j" href="/user/1406/" bx-tooltip-user-id="1406">Антон</a> написал:<br /><br />====quote====<br /> Андрей &nbsp; написал:<br />Похоже понял, однако уточните единственный ли это способ ? Хочется все варианты перебрать. 
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;L_ptr&nbsp;&nbsp; =&nbsp;&nbsp; lua_newthread(L);
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
=============
Так же скажите пожалуйста где бы взять список всех функций Луа и прочего которые в новом потоке запускаются, и какие в основном? Иначе говоря пренадлежность функция - поток (с точки зрения квика)<br />=============<br />Ну ябы выбрал этот вариант. А все варианты... я незнаю для чего вам много потоков) принадлежность к потоку можно проверить GetCurrentThread()<br />все колбеки - основной поток квика. мэин - вам создали дополнительный, делайте там всю обработку.<br />у меня там крутиться очередь libuv, вполне удобно.<br />=============<br /><br />В итоге сделал так:<br />1) Выделил L под main и поместил его в класс с мьютексом.<br />2) L приходящую при инициализации поместил во второй класс с мьютексом.<br /><br />Все функции внутри main используют класс № 1<br />Все коллбеки используют L которая у них в параметре приходит, парсят таблицы и передают моим коллбекам как параметр, второй параметр это класс с мьютексом № 2 - его используют все функции внутри других коллбеков. <br /><br />В итоге получается что если я внутри любого из коллбеков буду организовывать свои потоки то все будет защещино. и с main не как не перекликается. <br /><br />(я просто заготовку себе делаю что бы ботов не писать на lua) <br />
			<i>13.01.2018 06:46:35, Андрей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28615/topic3318/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28615/topic3318/</guid>
			<pubDate>Sat, 13 Jan 2018 06:46:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Lua Dll на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28608/topic3318/">Lua Dll на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_LeMtjtVH" href="/user/10086/" bx-tooltip-user-id="10086">Андрей</a> написал:<br />Похоже понял, однако уточните единственный ли это способ ? Хочется все варианты перебрать. 
====code====
<pre>&nbsp;&nbsp;L_ptr&nbsp;&nbsp;=&nbsp;&nbsp;lua_newthread(L);
&nbsp;&nbsp;</pre>
=============
Так же скажите пожалуйста где бы взять список всех функций Луа и прочего которые в новом потоке запускаются, и какие в основном? Иначе говоря пренадлежность функция - поток (с точки зрения квика)<br />=============<br />Ну ябы выбрал этот вариант. А все варианты... я незнаю для чего вам много потоков) принадлежность к потоку можно проверить GetCurrentThread()<br />все колбеки - основной поток квика. мэин - вам создали дополнительный, делайте там всю обработку.<br />у меня там крутиться очередь libuv, вполне удобно. <br />
			<i>12.01.2018 11:43:24, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28608/topic3318/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28608/topic3318/</guid>
			<pubDate>Fri, 12 Jan 2018 11:43:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Lua Dll на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28596/topic3318/">Lua Dll на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_BntQdr1N" href="/user/10086/" bx-tooltip-user-id="10086">Андрей</a> написал:<br />А как мне ассоциировать второй созданный луа стек с квиком ? когда я создаю второй стек, то у меня получается так что соощения которые я в него посылаю (&quot;message&quot;) в квике не видны уже. Я могу насоздовать сколько угодно стеков путем <br />
====code====
<pre>&nbsp;&nbsp;lua_State&nbsp;&nbsp;* L_ptr;
L_ptr&nbsp;&nbsp;=&nbsp;&nbsp;lua_open();//Создаем стэк
luaL_openlibs(L_ptr);&nbsp;&nbsp;</pre>
=============
Однако это же будут локальные копии внутри библиотеки. И я не смогу через них подписаться на события квика...<br />=============<br /><br />Похоже понял, однако уточните единственный ли это способ ? Хочется все варианты перебрать. 
====code====
<pre>L_ptr = lua_newthread(L);
</pre>
=============
Так же скажите пожалуйста где бы взять список всех функций Луа и прочего которые в новом потоке запускаются, и какие в основном? Иначе говоря пренадлежность функция - поток (с точки зрения квика) <br />
			<i>11.01.2018 02:07:06, Андрей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28596/topic3318/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28596/topic3318/</guid>
			<pubDate>Thu, 11 Jan 2018 02:07:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Lua Dll на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28595/topic3318/">Lua Dll на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			А как мне ассоциировать второй созданный луа стек с квиком ? когда я создаю второй стек, то у меня получается так что соощения которые я в него посылаю (&quot;message&quot;) в квике не видны уже. Я могу насоздовать сколько угодно стеков путем <br />
====code====
<pre>lua_State *L_ptr;
L_ptr = lua_open();//Создаем стэк
luaL_openlibs(L_ptr);</pre>
=============
Однако это же будут локальные копии внутри библиотеки. И я не смогу через них подписаться на события квика... <br />
			<i>11.01.2018 01:25:21, Андрей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28595/topic3318/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28595/topic3318/</guid>
			<pubDate>Thu, 11 Jan 2018 01:25:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Lua Dll на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28592/topic3318/">Lua Dll на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Стек глючить будет ) <br />У вас будет 2 потока, каждый будет работать со своим стеком. (1 получите в функции main) 2й при вызове экспортируемой из длл функции.<br />Eсли паралельно будете писать в 1 стек(что можно), то там будет каша. вобщем для каждого потока используйте свой стек.<br />Если создаете еще какие то свои потоки дополнительно, то уже на сколько хватит фантазии, можно еще 1 стек создать и поток запустить из луа, например. <br />Потоки вооще я не советую внутри плодить. с синхронизацией потом намучаетесь. <br />
			<i>10.01.2018 22:07:03, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28592/topic3318/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28592/topic3318/</guid>
			<pubDate>Wed, 10 Jan 2018 22:07:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Lua Dll на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28590/topic3318/">Lua Dll на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Доброго времени суток. У меня следующий вопрос:<br />Использую Lua_Api для плюсов. Lua 5.1.<br /><br />1) Запускаю квик.<br /><br />2) Квик вызывает скрипт луа и определяет несколько функций запускащихся в разных потоках. <br />допустим это коллбеки прихода котировок и основной поток - main,<br />Либо поток main и еще какой либо коллбек из квика работающий в другом потоке<br /><br />3) Сам скрипт Lua выглядит как вызов Dll, написанной на C++. <br /><br /> &nbsp; &nbsp;require(&quot;My dll&quot;); <br /><br />Внутри Dll я подписываюсь на эти 2 функции (т.е. коллбека от квика) и получается что вызов из терминала, отправляется в Dll и вызываются функции из моей Dll. <br /><br />3.1) Внутри Dll переменная Lua вынесена в глобальную и к ней подключаются еще нескольку функций, которые могут выполняться, как в каком либо из двух потоков запускаемых квиком, так и в каком либо своем потоке...<br /><br />----------<br /><br />Собственно из всего описанного вытек вопрос, нужно ли мне в каждой из функций (включая те что запускаются как коллбеки с программы № 1) делать луа как разделяемый ресурс ? Или же стек сам поймет что его вызывают из другого потока и не будет глючить не чего?<br /><br />----------<br /> &nbsp; <br />
			<i>10.01.2018 19:28:05, Андрей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28590/topic3318/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28590/topic3318/</guid>
			<pubDate>Wed, 10 Jan 2018 19:28:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
