<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: dll на c++ вылетает при detach]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме dll на c++ вылетает при detach форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Mon, 20 Apr 2026 07:33:51 +0300</pubDate>
		<item>
			<title>dll на c++ вылетает при detach</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48672/topic5825/">dll на c++ вылетает при detach</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_IKuen83T" href="/user/14217/" bx-tooltip-user-id="14217">Виктор</a> написал:<br />если не использовать ref() при вызове функции в новый поток, то значение передаётся по значению<br />=============<br />Конструктор делает move() того, что ему дали. Подразумевается, что передается именно плюсовый объект, что он отработает мув и потом деструктор в основном потоке увидит, что прибивать уже нечего. Или POD (но не указатель), где по барабану на мув. С сишным указателем, например, будут проблемы, это та же ссылка вид сбоку.<br /><br />А вообще поток создавать стоит только если ожидается хотя бы пара секунд его работы, там очень существенный оверхед. Под мелкие задачи лучше поток из пула брать (тем же async хотя бы). <br />
			<i>25.09.2020 20:44:34, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48672/topic5825/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48672/topic5825/</guid>
			<pubDate>Fri, 25 Sep 2020 20:44:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>dll на c++ вылетает при detach</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48670/topic5825/">dll на c++ вылетает при detach</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Да, спасибо большое, помогло. Странно что это так, в уроках которые я смотрел было сказано что если не использовать ref() при вызове функции в новый поток, то значение передаётся по значению. Теперь вызываю без параметров, всё нужное в глобальную переменную положил. <br />
			<i>25.09.2020 19:53:45, Виктор.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48670/topic5825/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48670/topic5825/</guid>
			<pubDate>Fri, 25 Sep 2020 19:53:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>dll на c++ вылетает при detach</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48645/topic5825/">dll на c++ вылетает при detach</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Два варианта ответа для разных уровней дзена.<br />1. Смотрите, что в аргументах передаете потоку. Эти аргументы живут в вызывающем потоке, как только вы второй отцепили, они сразу же будут прибиты, а второй поток об этом не узнает и будет их пытаться использовать, и либо нагрузит вам в базу мусора, либо вызовет av, что еще хороший исход (вам повезло, да).<br />2. Добавьте в (стандартный) &lt;thread&gt; первую строку следующего вида:<br />
====code====
<pre>#error This garbage should never be used in production code.
</pre>
============= <br />
			<i>25.09.2020 12:26:37, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48645/topic5825/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48645/topic5825/</guid>
			<pubDate>Fri, 25 Sep 2020 12:26:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>dll на c++ вылетает при detach</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48642/topic5825/">dll на c++ вылетает при detach</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Пишу dll для экспорта котировок в mysql.<br />В процессе выполнения, ввиду большого потока данных, функцию осуществляющую insert в mysql открепляю через detach(), чтобы быстрее вернуть управление в lua и не тормозить программу.<br />Однако, каждый раз головная программа немного работает и вылетает. Пока не упала, судя по логам, успевает несколько раз прокрутить детачнутую функциюю Иногда и 1 раз не успевает полностью. Такое ощущение, будто со временем что-то накапливается или до какого-то момента доходит и вылетает. Но каждый раз разный момент - иногда при первом запуске детачнутой функции крашится, а иногда на 3.<br /><br />В дампе пишет что &quot;Потоком была предпринята попытка прочитать или записать данные на виртуальный адрес, к которому он не имеет соответствующего доступа&quot;. Код исключения 0xC0000005.<br /><br />Если же заменить detach на join - то всё работает, только тормоза, конечно же, никуда не деваются.<br /><br />Я уже даже не знаю что думать в причины. <br />
			<i>25.09.2020 11:48:45, Виктор.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48642/topic5825/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48642/topic5825/</guid>
			<pubDate>Fri, 25 Sep 2020 11:48:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
