<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=416</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=416&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.».]]></description>
		<lastBuildDate>Tue, 18 Oct 2022 11:26:02 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3855#p3855</link>
			<description><![CDATA[<div class="quotebox"><cite>Serg_ пишет:</cite><blockquote><p>Вопрос, как написать работу со стеком на Lua C api <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p></blockquote></div><p>А что вы сделать-то хотите? по смыслу.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Tue, 18 Oct 2022 11:26:02 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3855#p3855</guid>
		</item>
		<item>
			<title><![CDATA[Re: SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3854#p3854</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Если написать требуемый алгоритм просто на Lua - все же будет работать и ничего пропадать не будет и не будет ошибок, верно?<br />Значит и другие стеки совершенно не нужны для вашей задачи. Раз интерпретатор Lua обходится одним стеком для того же самого.</p></blockquote></div><p>Так то оно правильно <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /><br />Вопрос, как написать работу со стеком на Lua C api <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Tue, 18 Oct 2022 11:07:48 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3854#p3854</guid>
		</item>
		<item>
			<title><![CDATA[Re: SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3851#p3851</link>
			<description><![CDATA[<p>Если написать требуемый алгоритм просто на Lua - все же будет работать и ничего пропадать не будет и не будет ошибок, верно?<br />Значит и другие стеки совершенно не нужны для вашей задачи. Раз интерпретатор Lua обходится одним стеком для того же самого.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Tue, 18 Oct 2022 10:19:29 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3851#p3851</guid>
		</item>
		<item>
			<title><![CDATA[Re: SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3850#p3850</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>1) Если сделать все без потоков, с использованием переданного вам стека Lua?<br />2) Если этот же алгоритм сделать на Lua - проблема с &quot;пропаданием&quot; подписок также проявится?</p><p>Если выяснится, что на чистом Lua эта проблема есть (т.е. в 2 - ответ &quot;да&quot;) - то это просто выглядит как косяк терминала, тогда надо сообщить разработчикам.</p></blockquote></div><p>2)Нет, на чистом Lua - такой проблемы нет.<br />1)Я вот пытаюсь понять, как бы мне сделать без &quot;потоков&quot; - только на Одном переданном Lua-стека.</p><p>Тут загвоздка такая: </p><p>Предположим я заказал SetUpdateCallbackcallback к примеру по 10 инструментам сразу и все эти 10 инструментов в квике не открыты и гарантировано будут запрашивается на сервере - а значит мне придется добавлять и удалять данные из общего Lua-Стека - я предполагаю, что это приведет к ошибке.</p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Tue, 18 Oct 2022 09:54:54 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3850#p3850</guid>
		</item>
		<item>
			<title><![CDATA[Re: SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3845#p3845</link>
			<description><![CDATA[<p>1) Если сделать все без потоков, с использованием переданного вам стека Lua?<br />2) Если этот же алгоритм сделать на Lua - проблема с &quot;пропаданием&quot; подписок также проявится?</p><p>Если выяснится, что на чистом Lua эта проблема есть (т.е. в 2 - ответ &quot;да&quot;) - то это просто выглядит как косяк терминала, тогда надо сообщить разработчикам.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Mon, 17 Oct 2022 06:42:06 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3845#p3845</guid>
		</item>
		<item>
			<title><![CDATA[SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3839#p3839</link>
			<description><![CDATA[<p>SetUpdateCallbackcallback в Lua C api - перезаписывает заказы:</p><p>Из скрипта квика вызывается Сищная-функция: в нее соответственно автоматически передается или создается Lua-Стек:&nbsp; </p><br /><p>Код</p><div class="codebox"><pre><code>int my_callback(lua_State* L)
{
//Доп.пераметры извелкаем через lua_upvalueindex.

std::cout&lt;&lt;&quot;interval_int:&quot; &lt;&lt;interval_int &lt;&lt;std::endl;
}



void my_call_CreateDataSource(lua_State* L_, name_class_insrument, name_code_paper, interval_int)
{
lua_getglobal(L, &quot;CreateDataSource&quot;);          

lua_pushstring(L,_ name_class_insrument);    
lua_pushstring(L_, name_code_paper);        
lua_pushnumber(L_, interval_int);                

int status_lua_pcall = lua_pcall(L, 3, 2, 0); 



my_call_SetUpdateCallback(L_, my_callback, name_class_insrument, name_code_paper, interval_int);    //Вызываем SetUpdateCallback и передаем в нее функцкиб обратного вызова и доп.параметры.
}


int ruc_cpp(lua_State* L_main)
{



lua_State* L_1 = lua_newthread(L_main);       //Создаю &quot;поток&quot; связанный с главным стеком.
lua_State* L_2 = lua_newthread(L_main);


my_call_CreateDataSource(L_1 , &quot;TQBR&quot;, &quot;GAZP&quot;, &quot;INTERVAL_H2&quot;);
my_call_CreateDataSource(L_2 , &quot;TQBR&quot;, &quot;GAZP&quot;, &quot;INTERVAL_H4&quot;);






    //-----------------------------------------------
    for (int i = 0; i &lt; 1000000; i++)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(100)); 
    }
    //-----------------------------------------------
}</code></pre></div><br /><p>Приведенный код частично условный, чтобы не загромождать кодом страницу.</p><p>Но суть в том, что - я создаю два новых &quot;потока&quot; от главного Луа-стека:<br />-Вызываю для каждого из двух созданных &quot;потоков&quot; - функцию CreateDataSource и навешиваю колбек через SetUpdateCallback.<br />-Первый и примерно второй и третий - колбеки - выводят интервал &quot;INTERVAL_H2&quot; - то есть это тот интервал, который я запросил первым у CreateDataSource...<br />-НО! Как только вызывается второй CreateDataSource для второго &quot;потока&quot; и навешивается callback - после этого любой вызываемый callback приходит только с интервалом &quot;INTERVAL_H4&quot; - что соотвевует второму вызову CreateDataSource - ТО ЕСТЬ произошло, как бы затирание подписки на колбек...<br />-НО ПОЧЕМУ ? Ведь я создал два разных &quot;потока&quot; которые хоть и связаныс основным луа-стеком, но сами обладают свои стеком, в который я и записываю результа от CreateDataSource.</p><p>Что то не понятно.</p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Sat, 15 Oct 2022 16:28:19 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3839#p3839</guid>
		</item>
	</channel>
</rss>
