<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Многопоточная работа из dll на C с Lua]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Многопоточная работа из dll на C с Lua форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 22 May 2026 18:42:01 +0300</pubDate>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34975/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Qt1ICEl7" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />Добрый день, столкнулся с такой проблемой в последнее время:<br />думал чтобы поменьше грузить Quik, запустить внутри lua, через средства C отдельный поток std::thread и в нём спокойно обрабатывать запросы стороннего приложения, некий сервер квик-данных реализовать.<br /><br />Но наткнулся на неприятную проблему, несмотря на то что потковая функция, pipe_thread спокойно работает, если её исполнить в основном main потоке (там тот же самый цикл по while (!stopped)), когда я запускаю её в отдельном потоке, я вижу как квик начинает тормозить: медленно открываются все окна, время начинает драматически отставать, и вообще происходят странные вещи: открытый квик и открые часы Windows 10 начинают &quot;замирать&quot;, т.е. показывают секунды 1, 2, 9, 15, вместо 1, 2, 3, 4 ...<br /><br />Может быть кто-нибудь сталкивался с этим? Не было ли в последней версии каких-то критических изменений связанных с синхронизацией и многопоточностью?<br />Сейчас код выглядит так:<br /> 
====code====
<pre>&nbsp;&nbsp;int main(lua_State&nbsp;&nbsp;* L){
&nbsp;&nbsp; //// тут мы создаём новый state для отдельного потока
&nbsp;&nbsp; //// см https://kristianrumberg.wordpress.com/ 2010 / 11 / 21 / 135 /
&nbsp;&nbsp; //// https://stackoverflow.com/questions/ 17817452 /lua -&nbsp;&nbsp;5&nbsp;&nbsp;-&nbsp;&nbsp;2&nbsp;&nbsp;-&nbsp;&nbsp;2&nbsp;&nbsp;- broken - threading - system/ 17818481&nbsp;&nbsp;#&nbsp;&nbsp;17818481 
&nbsp;&nbsp; //// https://forum.quik.ru/ message s/forum10/ message 10476/topic212/ #&nbsp;&nbsp;message 10476

&nbsp;&nbsp; //lua_gc(L, LUA_GCSTOP,&nbsp;&nbsp;0 );
&nbsp;&nbsp; //lua_State&nbsp;&nbsp;* tL&nbsp;&nbsp;=&nbsp;&nbsp;lua_newthread(L); // здесь tl кладётся в т.ч. стек L
&nbsp;&nbsp; //int thread_L_ref&nbsp;&nbsp;=&nbsp;&nbsp;luaL_ref(L, LUA_REGISTRYINDEX); // создаётся ссылка на объект на верхушке стека
&nbsp;&nbsp; //lua_pushvalue(L,&nbsp;&nbsp;-&nbsp;&nbsp;1 );
&nbsp;&nbsp; //lua_gc(L, LUA_GCRESTART,&nbsp;&nbsp;0 );

&nbsp;&nbsp; //stopped&nbsp;&nbsp;=&nbsp;&nbsp; false ;
&nbsp;&nbsp; //std::thread pipeThread(pipe_thread, tL);
&nbsp;&nbsp; //lua_function &#60; lua_Number &#62;&nbsp;&nbsp;lua_Sleep(L,&nbsp;&nbsp;"sleep" );

&nbsp;&nbsp; // while&nbsp;&nbsp;( ! stopped) {
&nbsp;&nbsp; //&nbsp;&nbsp; lua_Sleep(&nbsp;&nbsp;1000&nbsp;&nbsp;);
&nbsp;&nbsp; //}

&nbsp;&nbsp; // pipeThread.join ();
&nbsp;&nbsp; //lua_unref(L, thread_L_ref);
&nbsp;&nbsp; pipe_thread(L);
&nbsp;&nbsp;&nbsp;&nbsp;message (L,&nbsp;&nbsp;"QPIPE: скрипт остановлен" );

&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp; 0 ;
}



&nbsp;&nbsp;</pre>
=============
 Если закомментировать вызов pipe_thread и расскомментировать код, который создаёт отдельный поток, то будут тормоза.<br />Может быть кто-нибудь решал похожую задачу?<br />=============<br />давно это было. делал доп потки. ничего не тормозило.<br />Если не читали,<br /> то советую проштудировать<br /> Джеффри Рихтер .Создание эффективных WIN32 приложений с учетом специфики 64 разрядной версии Windows. <br />
			<i>23.11.2018 13:52:24, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34975/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34975/topic4036/</guid>
			<pubDate>Fri, 23 Nov 2018 13:52:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34600/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			извиняюсь за ссылки под картинками. кажется сайт хостинга картинок пропихнул рекламу.<br />к сожалению редактировать сообщения нельзя. <br />
			<i>27.10.2018 10:08:28, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34600/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34600/topic4036/</guid>
			<pubDate>Sat, 27 Oct 2018 10:08:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34599/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			вобщем углубился немного в профилирование, узнал даже что-то новое и интересное.<br />и по-моему нашел баг. даже чуть глубже чем в квике.<br /><noindex><a href="https://ibb.co/hFbBaq" target="_blank" rel="nofollow">&lt;img src=&quot;https://preview.ibb.co/i9cv1V/image.png&quot; alt=&quot;Пользователь добавил изображение&quot; border=&quot;0&quot; /&gt;</a></noindex><br /><noindex><a href="https://movieplotholes.com/monsters-inc" target="_blank" rel="nofollow">monsters inc scare simulator</a></noindex><br />если я всё правильно понимаю, квик пытается что-то полупрозрачное "отрисовать" и при этом отчаянно подвисает в win32kfull.sys<br />это 32 битный драйвер десктопа (системный компонент windows) и обновлён у меня он был 28.08.2018<br />у меня было много обновлений установлено 29 августа. <br />решил обновить windows, у меня была старенькая версия, в новой версия драйвера поновоее.<br />вот такой драйвер у меня<br /><noindex><a href="https://ibb.co/hhkOMV" target="_blank" rel="nofollow">&lt;img src=&quot;https://image.ibb.co/mgxETA/old-driver.png&quot; alt=&quot;Пользователь добавил изображение&quot; border=&quot;0&quot; /&gt;</a></noindex><br /><noindex><a href="https://movieplotholes.com/monsters-inc" target="_blank" rel="nofollow">monsters inc scare simulator</a></noindex><br /><br />надеюсь проблема решится. вообще больше похоже было на общесистемную проблему. потому что часы десктопные замирали. <br />
			<i>27.10.2018 10:04:55, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34599/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34599/topic4036/</guid>
			<pubDate>Sat, 27 Oct 2018 10:04:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34594/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если графики нужны чисто боту их можно посворачивать, будет уже намного лучше.<br />А если нужны себе для &quot;традиционной&quot; ручной торговли, можно альтернативным квиком обзавестись открыв где-нить второй чем на символическую сумму. У меня в сбере такой есть )))<br />Такая вот мысль возникла... <br />
			<i>26.10.2018 20:15:54, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34594/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34594/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 20:15:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34593/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_U9GC5ZKS" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />видимо что-то криво в графиках написано у разрабов - всё работает в одном потоке! потому что на одном ядре.<br />=============<br />Вообще &nbsp;всегда считал что это хотя и не обязательное требование, но уж как &nbsp;минимум обычная практика для вендовых программ, все окна в одном потоке. &nbsp;Иначе с диспетчирезацией сообщений + синхронизацией очень много гемора &nbsp;если в 2 словах. Возможный выигрыш производительности редко того стоить &nbsp;может. <br />Нам остается эту данность учитывать )) <br />
			<i>26.10.2018 20:11:13, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34593/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34593/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 20:11:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34592/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			картинка вроде бы подгружается с улучшением качества, сначала плохое, потом загружается и становится отличной<br />у меня так :)<br /><br />вобщем сделал профилирование, по-моему я убедился, что проблема не в моём коде<br />вот моя библиотечка - кушает немного совсем, на общем фоне не видно, ничего не лочит<br /><noindex><a href="https://ibb.co/gahwqq" target="_blank" rel="nofollow">&lt;img src=&quot;https://preview.ibb.co/f4q5iA/qlua-pipe.png&quot; alt=&quot;Пользователь добавил изображение&quot; border=&quot;0&quot; /&gt;</a></noindex><br /><br />скорее всего дело в графиках.<br />удалил несколько ADX и RSI, посмотрю в понедельник. на вечёрке всё летает.<br />квик у меня только один, и для скриптов и просто посмотреть.<br />видимо что-то криво в графиках написано у разрабов - всё работает в одном потоке! потому что на одном ядре.<br /><br /><noindex><a href="https://ibb.co/b73Y3A" target="_blank" rel="nofollow">&lt;img src=&quot;https://preview.ibb.co/iSsROA/image.png&quot; alt=&quot;Пользователь добавил изображение&quot; border=&quot;0&quot; /&gt;</a></noindex> <br />
			<i>26.10.2018 19:37:31, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34592/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34592/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 19:37:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34591/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Nr2vScuI" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />Ну до миллионов у меня дело не дошло.<br />=============<br />Это было что-то типа стресс-теста. По дороге еще мерил что сколько времени занимает. В принципе сделал для себя ряд полезных наблюдений. В реальной то жизни у меня пока активность невысокая.<br /><br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_tkiEbKn4" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />Честно говоря мне немного удивительно что вы бомбардровали квик и он не наелся.<br />=============<br />Ну у меня же осуществлялся доступ к хранилищу терминала в режиме &quot;только чтение&quot;, там по идее должна быть очень недорогая синхронизация. То есть это я так думаю что должно быть по идее только чтение, исходников терминала не видел разумеется. Но результат вроде адекватен.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_3Z9Wfypd" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />вот так на 8 ядерном CPU последняя версия квика работает в чистом виде, без всяких запущенных скриптов<br />=============<br />К сожалению у меня ваш скрин открывается очень размытым каким-то, нифига не разобрать. Просто для сравнения, у меня квик в котором я торгую &quot;традиционным образом&quot;, там тоже нет никаких пока скриптов и тп. Но присутствует в общей сложности порядка 350 окон (таблицы / графики). На 50 с чем то вкладках. Так вот, памяти он жрет по меркам 32 бит процесса немеряно, к вечеру обычно порядка 2.2-2.4 гига нажирает. Но проц грузит очень умеренно, если на виду 5 графиков то гдето на треть одно ядро. А если на виду нет графиков вообще не грузит почти. Данные в нем заказаны в максимально возможном количестве (для справки).<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_PESFJs47" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a> написал:<br />Я проверял что-то, там был нюанс <noindex><a href="https://forum.quik.ru/messages/forum10/message29998/topic3409/#message29998" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message29998/topic3409/#message29998</a></noindex> <br />=============<br />Это немного другой нюанс, хотя он из той же темы и тоже заслуживает пристального внимания. Читал, имею в виду. Ну опять же, многопоточныых стресс-тестов пока не гонял, своих комментариев нет.<br />Меня изначально интересовала ситуация примерно такого плана, допустим стаканы я получаю в мэйн поскольку эта операция относительно дорогая а всякие там лучшие биды и тп сразу в коллбэке. Вот не возникнет ли каких-то затыков из-за внутренней синхронизации в квике. Официальный ответ вроде нет и по моим представлениям вроде так и быть должно. Как дойду до обработки стаканов обязательно проверю, пока другим занят )) <br />
			<i>26.10.2018 18:40:46, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34591/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34591/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 18:40:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34589/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://ibb.co/k2vhDA" target="_blank" rel="nofollow">&lt;img src=&quot;https://preview.ibb.co/eFgNDA/quik.png&quot; alt=&quot;Пользователь добавил изображение&quot; border=&quot;0&quot; /&gt;</a></noindex><br /><br />может дело было вообще не в бобине<br />вот так на 8 ядерном CPU последняя версия квика работает в чистом виде, без всяких запущенных скриптов<br /><br />почему?..<br />явно ведь что такую штуку "наесть" легче лёгкого.. <br />
			<i>26.10.2018 17:57:25, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34589/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34589/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 17:57:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34588/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_1nZ4Wqzr" href="/user/12453/" bx-tooltip-user-id="12453">BlackBoar</a>, <br />====quote====<br /><a class="blog-p-user-name" id="bp_eixnwxd5" href="/user/12453/" bx-tooltip-user-id="12453">BlackBoar</a> написал:<br />Что будет если начать гонять функциональность квик сразу из нескольких потоков сам пока не проверял.<br />=============<br />Я проверял что-то, там был нюанс<br /><noindex><a href="https://forum.quik.ru/messages/forum10/message29998/topic3409/#message29998" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message29998/topic3409/#message29998</a></noindex> <br />
			<i>26.10.2018 17:30:31, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34588/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34588/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 17:30:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34587/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_zp4Ubmkg" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a> написал:<br />Я так и делаю, только событий у меня много, поэтому<br /><br />WaitForMultipleObjects с сопутствующими функциями <br /><br />=============<br />вам случайно не приходилось решать проблему с определением того, когда можно считать &quot;свечку&quot; готовой, что она уже больше не обновится?<br />интересно если её можно решить максимально &quot;близко&quot; по времени и идеально точно по данным. <br />
			<i>26.10.2018 16:38:21, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34587/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34587/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 16:38:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34586/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Ну до миллионов у меня дело не дошло.<br />Я всё-таки пока остановился на слипах в цикле на клиенте. Ну может и не красиво, пока вроде бы работает.<br />Скорость выбрал ~350 сообщений в секунду. Так работает. Мне кажется больше от квика требовать смысла нету. <br /><br />Честно говоря мне немного удивительно что вы бомбардровали квик и он не наелся.<br />Я спрашиваю getParameEx, и опрашиваю datasource (который создаю один раз).<br />По datasource имеется цикл, так что это наверное потяжелее операция.<br />Так же смотрю таблицы лимитов и позиций, там тоже небольшие циклы есть. &nbsp; <br />
			<i>26.10.2018 16:23:00, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34586/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34586/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 16:23:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34585/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_4Krs5IfT" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />я повыкидывал timeBeginPeriod, кажется получше стало. с холостым ходом тоже решил проблему, поменяв Sleep на WaitForSingleObjectсейчас есть некоторое замедление только на старте сессии, в 10:00 - 10:30, дальше вроде тоже есть неравномерность, на секундочку бывает замирает, частенько, надо последить ещё.возможно я забыл перезагрузиться после выключения timeBeginPeriod, сейчас после перезагрузки уже 11:50 и всё тикает равномерно.<br />=============<br />Чтож, будем знать про потенциально возможные грабли с timeBeginPeriod.<br />Ну а тупому слипу в рабочем коде имхо в любом случае не место, так только, для тестов или проблему выявить.<br />Замедление в 10 утра (опять же имхо) может быть вполне нормальным если много чего обрабатываете.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_8OWqMrub" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />или думаю, может это потому что я слишком бомбардирую квик?есть ли интересно какой-нибудь предел обращения в цикле, допустим к свечкам DataSource, я ведь из C++ довольно быстро это делаю. <br />=============<br />Эксперимента ради бомбил квик миллионами запросов подряд, только у меня запрашивались getParamEx2 и getQuoteLv2. Поток который этим занимался естественно грузил 1 процессорное ядро на полную (это очевидно так и быть должно), каких-то аномалий / ошибок при получении результатов не нашел. Что будет если начать гонять функциональность квик сразу из нескольких потоков сам пока не проверял. Спрашивал в соседней теме разрабов, с их слов вроде должно работать параллельно. <br /><br />Если у вас по этому поводу получаются другие данные тоже было бы интересно узнать что именно. <br />
			<i>26.10.2018 15:55:18, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34585/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34585/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 15:55:18 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34577/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_LvGv2CwL" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />может надо создать какой-нибудь глобальный именной event в квике и взводить его, когда изменяется свечка только в updateCallBack, а в другом процессе его ловить.<br />=============<br />Я так и делаю, только событий у меня много, поэтому<br /><br />WaitForMultipleObjects с сопутствующими функциями &nbsp; <br />
			<i>26.10.2018 12:02:03, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34577/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34577/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 12:02:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34575/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_IhKLKNEb" href="/user/12453/" bx-tooltip-user-id="12453">BlackBoar</a> написал:<br /><br />Если найдете причину опишите плиз, тоже интересно знать чего не надо делать )))<br />=============<br />спасибо ещё раз, за трезвый взгляд.<br />я повыкидывал timeBeginPeriod, кажется получше стало. с холостым ходом тоже решил проблему, поменяв Sleep на WaitForSingleObject<br />сейчас есть некоторое замедление только на старте сессии, в 10:00 - 10:30, дальше вроде тоже есть неравномерность, на секундочку бывает замирает, частенько, надо последить ещё.<br />возможно я забыл перезагрузиться после выключения timeBeginPeriod, сейчас после перезагрузки уже 11:50 и всё тикает равномерно.<br /><br />или думаю, может это потому что я слишком бомбардирую квик?<br />есть ли интересно какой-нибудь предел обращения в цикле, допустим к свечкам DataSource, я ведь из C++ довольно быстро это делаю. <br />какую паузу между перебором свечей в DS резонно вставить, 10 миллисекунд кажется мало? <br />может надо создать какой-нибудь глобальный именной event в квике и взводить его, когда изменяется свечка только в updateCallBack, а в другом процессе его ловить. <br />
			<i>26.10.2018 11:48:19, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34575/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34575/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 11:48:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34563/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_s3GhXrwy" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />я сейчас &quot;грешу&quot; на всё подряд, вот как раз думаю про WaitForSingleObject - нет ли в ней подводных камней?<br />=============<br />Наверняка полно но врядли там есть что-то что могло бы спровоцировать описаную вами ситуацию. WaitForSingleObject исправно выкидывает ждущий поток с процессора а у вас по описанию наоборот выглядит, какие-то потоки до упора его занимают. <br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_JQPboblO" href="/user/807/" bx-tooltip-user-id="807">Павел Bosco</a> написал:<br />или может быть проблема в том что я использую time_beginperiod(1)?<br />=============<br />А это что? Если имеется в виду MMRESULT timeBeginPeriod( &nbsp; UINT uPeriod ); то да, есть в МСДН такая интересная фраза <br /><br /><br />====quote====<br />Use caution when calling timeBeginPeriod, as frequent calls can significantly affect the system clock, system power usage, and the scheduler.<br />=============<br />Полный текст здесь, <noindex><a href="https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-sleep" target="_blank" rel="nofollow">https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-sleep</a></noindex><br /><br />Вообще же мне например пока так и непонятно как выглядит минимальный код воспроизводящий вашу проблему. По начальному посту такое впечатление что она проявляется уже на &quot;холостом ходу&quot;, если создать еще один поток который будет просто спать параллельно с мэйн. <br /><br />Поскольку меня этот вопрос тоже интересует, создал на пробу 3 таких потока. У меня они как и задумано раз в секунду флудят в окно сообщений квика, остальное время исправно спят. Загрузка процессора 0, ничего не тормозит. Если не затруднит скомпилируйте и попробуйте у себя, весь код под спойлером.<br /><br /><table class="forum-spoiler"><thead onclick="if (this.nextSibling.style.display=='none') { this.nextSibling.style.display=''; BX.addClass(this, 'forum-spoiler-head-open'); } else { this.nextSibling.style.display='none'; BX.removeClass(this, 'forum-spoiler-head-open'); } BX.onCustomEvent('BX.Forum.Spoiler:toggle', [{node: this}]); event.stopPropagation();"><tr><th><div>Скрытый текст</div></th></tr></thead><tbody class="forum-spoiler" style="display:none;"><tr><td>Спойлер<br /><br />
====code====
<pre>#include &#60;thread&#62;
#define WIN32_LEAN_AND_MEAN 
#include &#60;windows.h&#62;

#ifndef LUA_LIB
#define LUA_LIB
#endif // !LUA_LIB
#ifndef LUA_BUILD_AS_DLL
#define LUA_BUILD_AS_DLL
#endif // !LUA_BUILD_AS_DLL
#include &#60;Lua5.1/lua.hpp&#62;
#pragma comment(lib, "Lua5.1.lib")

bool bContinueRunning;

inline void QLuaRegisterCallback(lua_State * L, lua_CFunction pfCallback, const char * pcNameToRegister)
{
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushcclosure(L, pfCallback, 0);
&nbsp;&nbsp;&nbsp;&nbsp;lua_setfield(L, LUA_GLOBALSINDEX, pcNameToRegister);
}

int TestThreadProc(void * pvContext)
{
&nbsp;&nbsp;&nbsp;&nbsp;lua_State * Lt = (lua_State *)pvContext;
&nbsp;&nbsp;&nbsp;&nbsp;while (bContinueRunning)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_getfield(Lt, LUA_GLOBALSINDEX, "message");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pushstring(Lt, "Hello from thread");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pushinteger(Lt, 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pcall(Lt, 2, 0, NULL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::Sleep(1000);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

int TestThreadProc1(void * pvContext)
{
&nbsp;&nbsp;&nbsp;&nbsp;lua_State * Lt = (lua_State *)pvContext;
&nbsp;&nbsp;&nbsp;&nbsp;while (bContinueRunning)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_getfield(Lt, LUA_GLOBALSINDEX, "message");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pushstring(Lt, "Hello from thread 1");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pushinteger(Lt, 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pcall(Lt, 2, 0, NULL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::Sleep(1000);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

int TestThreadProc2(void * pvContext)
{
&nbsp;&nbsp;&nbsp;&nbsp;lua_State * Lt = (lua_State *)pvContext;
&nbsp;&nbsp;&nbsp;&nbsp;while (bContinueRunning)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_getfield(Lt, LUA_GLOBALSINDEX, "message");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pushstring(Lt, "Hello from thread 2");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pushinteger(Lt, 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pcall(Lt, 2, 0, NULL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::Sleep(1000);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}


int QLuaOnInit(lua_State * L)
{
&nbsp;&nbsp;&nbsp;&nbsp;bContinueRunning = true;
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

int QLuaOnStop(lua_State * L)
{
&nbsp;&nbsp;&nbsp;&nbsp;bContinueRunning = false;
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushinteger(L, 10000);
&nbsp;&nbsp;&nbsp;&nbsp;return 1;
}

int QLuaMain(lua_State * L)
{

&nbsp;&nbsp;&nbsp;&nbsp;lua_State * Lt = lua_newthread(L);
&nbsp;&nbsp;&nbsp;&nbsp;::std::thread TestThread(TestThreadProc, (void *)Lt);
&nbsp;&nbsp;&nbsp;&nbsp;Lt = lua_newthread(L);
&nbsp;&nbsp;&nbsp;&nbsp;::std::thread TestThread1(TestThreadProc1, (void *)Lt);
&nbsp;&nbsp;&nbsp;&nbsp;Lt = lua_newthread(L);
&nbsp;&nbsp;&nbsp;&nbsp;::std::thread TestThread2(TestThreadProc2, (void *)Lt);

&nbsp;&nbsp;&nbsp;&nbsp;while (bContinueRunning)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_getfield(L, LUA_GLOBALSINDEX, "message");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pushstring(L, "Hello from main");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pushinteger(L, 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pcall(L, 2, 0, NULL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::Sleep(1000);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;TestThread.join();
&nbsp;&nbsp;&nbsp;&nbsp;TestThread1.join();
&nbsp;&nbsp;&nbsp;&nbsp;TestThread2.join();
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

static struct luaL_reg ls_lib&#91;&#93; = {
{ NULL, NULL }
};

extern "C" LUALIB_API int luaopen_QTest(lua_State *L)
{
&nbsp;&nbsp;&nbsp;&nbsp;luaL_openlib(L, "QTest", ls_lib, 0);

&nbsp;&nbsp;&nbsp;&nbsp;QLuaRegisterCallback(L, QLuaMain, "main");

&nbsp;&nbsp;&nbsp;&nbsp;QLuaRegisterCallback(L, QLuaOnInit, "OnInit");
&nbsp;&nbsp;&nbsp;&nbsp;QLuaRegisterCallback(L, QLuaOnStop, "OnStop");

&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule,
&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ul_reason_for_call,
&nbsp;&nbsp;&nbsp;&nbsp;LPVOID lpReserved
)
{
&nbsp;&nbsp;&nbsp;&nbsp;switch (ul_reason_for_call)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;case DLL_PROCESS_ATTACH:
&nbsp;&nbsp;&nbsp;&nbsp;case DLL_THREAD_ATTACH:
&nbsp;&nbsp;&nbsp;&nbsp;case DLL_THREAD_DETACH:
&nbsp;&nbsp;&nbsp;&nbsp;case DLL_PROCESS_DETACH:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;
}

</pre>
=============
</td></tr></tbody></table><br /><br />Если найдете причину опишите плиз, тоже интересно знать чего не надо делать ))) <br />
			<i>26.10.2018 00:35:10, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34563/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34563/topic4036/</guid>
			<pubDate>Fri, 26 Oct 2018 00:35:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34561/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_u8KPV8Kb" href="/user/12453/" bx-tooltip-user-id="12453">BlackBoar</a> написал:<br />Не знаю насколько моя задача похожая, поделюсь наблюдениями вдруг чем то поможет.<br />Новые потоки из С-функции зарегистрированой в луа-движке как main пробовал. Но STL не пользовался, пробовал штатное средство _beginthreadex и пробовал boost thread. В созданом потоке пробовал крутить просто цикл наподобие вашего while (!stopped), цикл ожидания каких нибудь событий по WaitForSingleObject(...) а также пробовал запускать интерфейс на WinForms. Описаной вами проблемы не наблюдалось. Думаю можно сказать что ожидаемо все работало.<br /><br /><br />=============<br /><br />спасибо за отзыв!<br />я сейчас &quot;грешу&quot; на всё подряд, вот как раз думаю про WaitForSingleObject - нет ли в ней подводных камней?<br />или может быть проблема в том что я использую time_beginperiod(1)?<br />у меня использовались и простые Sleep тоже, я подумал что лучше максимально прикинуться &quot;Lua&quot;, чтобы квику было &quot;хорошо&quot;<br /><br />не могу понять что не так с кодом, какие есть запрещённые функции.<br />я ведь правильно понимаю, что если я в main(L) буду использовать какой-нибудь ReadFile блокирующий, то это нормально, т.к. ожидание будет &quot;в ядре&quot;?<br />у меня есть цикл, я там использую примерно такой вариант
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!ReadFile(handle, readBuffer, BUFFER_SIZE, &#38;bytesRead, &#38;overlapped)) { // асинхронное чтение, возврат по ERROR_IO_PENDING - надо ждать завершения
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD error = GetLastError();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (error == ERROR_IO_PENDING) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(threadL, "Ждём записи");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD status = WaitForSingleObject(handle, 1000); // ниже проверки на успех или обрыв, обычно читает
...
processCommand(threadL, readBuffer, bytesRead); // тут всякие квик-луа запросы
...
if (!WriteFile(handle, responseBuffer, responseLength, &#38;written, &#38;overlapped)) {
...// тут проверка на обрыв и дисконнект - обычно проходит мимо
}

// дальше идём на ReadFile, там обычно ловим IO_PENDING и входим в WaitForSingleObject</pre>
=============
может ли этот цикл чего-то &quot;ломать&quot;?<br />я проверял через lua_gettop() в конце каждой итерации записи - в стеке пусто, как и должно быть. <br />
			<i>25.10.2018 21:05:57, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34561/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34561/topic4036/</guid>
			<pubDate>Thu, 25 Oct 2018 21:05:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34553/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Не знаю насколько моя задача похожая, поделюсь наблюдениями вдруг чем то поможет.<br />Новые потоки из С-функции зарегистрированой в луа-движке как main пробовал. Но STL не пользовался, пробовал штатное средство _beginthreadex и пробовал boost thread. В созданом потоке пробовал крутить просто цикл наподобие вашего while (!stopped), цикл ожидания каких нибудь событий по WaitForSingleObject(...) а также пробовал запускать интерфейс на WinForms. Описаной вами проблемы не наблюдалось. Думаю можно сказать что ожидаемо все работало.<br /><br />У меня при первом взгляде на ваш код возникает такой вопрос, а как там &quot;внутри&quot; устроена функция lua_Sleep(), может в ней проблема при вызове из 2 потоков? Попробуйте вместо нее <br />
====code====
<pre>#include &#60;Windows.h&#62;
Sleep(1000);</pre>
=============
или <br />
====code====
<pre>#include &#60;chrono&#62;
#include &#60;thread&#62;
std::this_thread::sleep_for(std::chrono::milliseconds(1000));</pre>
=============
Других мыслей навскидку нет )) <br />
			<i>25.10.2018 17:11:02, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34553/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34553/topic4036/</guid>
			<pubDate>Thu, 25 Oct 2018 17:11:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Многопоточная работа из dll на C с Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34541/topic4036/">Многопоточная работа из dll на C с Lua</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день, столкнулся с такой проблемой в последнее время:<br />думал чтобы поменьше грузить Quik, запустить внутри lua, через средства C отдельный поток std::thread и в нём спокойно обрабатывать запросы стороннего приложения, некий сервер квик-данных реализовать.<br /><br />Но наткнулся на неприятную проблему, несмотря на то что потковая функция, pipe_thread спокойно работает, если её исполнить в основном main потоке (там тот же самый цикл по while (!stopped)), когда я запускаю её в отдельном потоке, я вижу как квик начинает тормозить: медленно открываются все окна, время начинает драматически отставать, и вообще происходят странные вещи: открытый квик и открые часы Windows 10 начинают &quot;замирать&quot;, т.е. показывают секунды 1, 2, 9, 15, вместо 1, 2, 3, 4 ...<br /><br />Может быть кто-нибудь сталкивался с этим? Не было ли в последней версии каких-то критических изменений связанных с синхронизацией и многопоточностью?<br />Сейчас код выглядит так:<br />
====code====
<pre>int main(lua_State *L){
&nbsp;&nbsp;&nbsp;//// тут мы создаём новый state для отдельного потока
&nbsp;&nbsp;&nbsp;//// см https://kristianrumberg.wordpress.com/2010/11/21/135/
&nbsp;&nbsp;&nbsp;//// https://stackoverflow.com/questions/17817452/lua-5-2-2-broken-threading-system/17818481#17818481
&nbsp;&nbsp;&nbsp;//// https://forum.quik.ru/messages/forum10/message10476/topic212/#message10476

&nbsp;&nbsp;&nbsp;//lua_gc(L, LUA_GCSTOP, 0);
&nbsp;&nbsp;&nbsp;//lua_State *tL = lua_newthread(L); // здесь tl кладётся в т.ч. стек L
&nbsp;&nbsp;&nbsp;//int thread_L_ref = luaL_ref(L, LUA_REGISTRYINDEX); // создаётся ссылка на объект на верхушке стека
&nbsp;&nbsp;&nbsp;//lua_pushvalue(L, -1);
&nbsp;&nbsp;&nbsp;//lua_gc(L, LUA_GCRESTART, 0);

&nbsp;&nbsp;&nbsp;//stopped = false;
&nbsp;&nbsp;&nbsp;//std::thread pipeThread(pipe_thread, tL);
&nbsp;&nbsp;&nbsp;//lua_function&#60;lua_Number&#62; lua_Sleep(L, "sleep");

&nbsp;&nbsp;&nbsp;//while (!stopped) {
&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;lua_Sleep( 1000 );
&nbsp;&nbsp;&nbsp;//}

&nbsp;&nbsp;&nbsp;//pipeThread.join();
&nbsp;&nbsp;&nbsp;//lua_unref(L, thread_L_ref);
&nbsp;&nbsp;&nbsp;pipe_thread(L);
&nbsp;&nbsp;&nbsp;message(L, "QPIPE: скрипт остановлен");

&nbsp;&nbsp;&nbsp;return 0;
}



</pre>
=============
Если закомментировать вызов pipe_thread и расскомментировать код, который создаёт отдельный поток, то будут тормоза.<br />Может быть кто-нибудь решал похожую задачу? <br />
			<i>25.10.2018 13:18:14, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34541/topic4036/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34541/topic4036/</guid>
			<pubDate>Thu, 25 Oct 2018 13:18:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
