<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Проблемы с SetTimer]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=15232</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15232&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Проблемы с SetTimer».]]></description>
		<lastBuildDate>Sat, 14 Mar 2020 04:05:33 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138497#p138497</link>
			<description><![CDATA[<p><strong>Foma</strong>, ну это и так очевидно. Волнует больше, что он может сам по себе взять и перестать чекать метку. Либо какой-то другой запуск setTimer&#039;a убьёт предыдущий.</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Sat, 14 Mar 2020 04:05:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138497#p138497</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138494#p138494</link>
			<description><![CDATA[<div class="quotebox"><cite>kolotilov256 пишет:</cite><blockquote><p>А ещё подобные подводные камни, <strong>о которых никто нигде не рассказывает</strong>, существуют у setTimer&#039;ов?)</p></blockquote></div><p><a href="http://www.script-coding.com/AutoHotkey/SetTimer.html">http://www.script-coding.com/AutoHotkey/SetTimer.html</a><br /></p><div class="quotebox"><blockquote><p>Таймер, возможно, не сможет запускаться с заданной частотой также в следующих случаях:</p><p>1. Центральный процессор сильно загружен выполнением других приложений.<br />2. Исполнение самой подпрограммы таймера занимает больше времени, чем период времени, заданный в этом таймере,..</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Foma)]]></author>
			<pubDate>Fri, 13 Mar 2020 13:06:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138494#p138494</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138457#p138457</link>
			<description><![CDATA[<p>Например сделать, чтобы подпрограмма запускалась, скажем, каждую минуту. А как при помощи цикла сделать, чтобы запуск был каждую минуту? Ведь команда Loop не знает, как долго будет выполняться тело цикла - секунду или 10 секунд. Это ведь может зависеть от загрузки ЦП и доступности жёсткого диска.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Wed, 11 Mar 2020 21:23:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138457#p138457</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138456#p138456</link>
			<description><![CDATA[<p>Какой смысл тогда в setTimer, если можно просто сделать один большой цикл на все события, которые тебе нужны? А не разделять эти события на разные метки setTimer&#039;a ?</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Wed, 11 Mar 2020 21:01:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138456#p138456</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138455#p138455</link>
			<description><![CDATA[<p>Подобные темы периодически появляются. Основное, что следует знать - Autohotkey поддерживает только один поток, настоящей многопоточности быть не может. Можно как-нибудь имитировать потоки с помощью таймеров, но они в любом случае не могут работать параллельно. Здесь всё делается последовательно.<br />Нажатие горячей клавиши приостанавливает текущий поток. Но не прекращает его. Когда гор. клавиша отработает - предыдущий поток продолжит свою работу. Это поведение можно регулировать специальными командами, директивами.</p><p>Есть такая статья &quot;Потоки&quot;; оригинал статьи в AutoHotkey.chm: &quot;Threads&quot;, по ссылке из статьи &quot;Hotkeys&quot; (Ник переводчика: semechka). Вот её почитайте.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Wed, 11 Mar 2020 20:23:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138455#p138455</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138454#p138454</link>
			<description><![CDATA[<p>Ну окей. Не буду использовать циклы Loop, while, for.</p><p>Вот ещё пример кода, который не работает как надо. Здесь что не так?</p><p>При нажатии F2 поток &quot;lab1&quot; умирает.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>#SingleInstance Force
#Persistent
#NoEnv

SetTimer, lab1, 250
return

f2::
SetTimer, lab2, 250
return

lab1:
msg_box(&quot;lab1 1&quot;)
sleep 500
msg_box(&quot;lab1 2&quot;)
sleep 500
msg_box(&quot;lab1 3&quot;)
sleep 500
msg_box(&quot;lab1 4&quot;)
sleep 500
msg_box(&quot;lab1 5&quot;)
return

lab2:
msg_box(&quot;lab2 1&quot;)
sleep 500
msg_box(&quot;lab2 2&quot;)
sleep 500
msg_box(&quot;lab2 3&quot;)
sleep 500
msg_box(&quot;lab2 4&quot;)
sleep 500
msg_box(&quot;lab2 5&quot;)
return

msg_box(var)
{
	msgbox,,%var%,, 0.4
}</code></pre></div></div></div><p>Хотя ладно, не умирает. Но нестабильно как-то ведёт себя. Может раз 5 проиграться метка lab2, а потом уже lab1.</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Wed, 11 Mar 2020 19:52:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138454#p138454</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138453#p138453</link>
			<description><![CDATA[<p><strong>stealzy</strong>, т.е в метке, которую хотим использовать в таймере, запрещается делать бесконечные (или конечные, но длительные по исполнению) циклы. А ещё подобные подводные камни, о которых никто нигде не рассказывает, существуют у setTimer&#039;ов?)</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Wed, 11 Mar 2020 19:44:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138453#p138453</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138451#p138451</link>
			<description><![CDATA[<p>Таймер может, а цикл нет.</p>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Wed, 11 Mar 2020 19:41:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138451#p138451</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138450#p138450</link>
			<description><![CDATA[<p><strong>stealzy</strong>, так почему во время выполнения тела цикла Loop setTimer не может выполнить параллельно действия в метке? Всё в одном потоке произойдёт. Точно также как множество setTimer&#039;ов выполняют сразу несколько действий с разными метками (друг за дружкой, создавая иллюзию многопоточности)</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Wed, 11 Mar 2020 19:36:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138450#p138450</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138449#p138449</link>
			<description><![CDATA[<p>И это накладывается на классику - подпрограмму выполняющуюся дольше таймера.<br />С таким подходом гарантий что вы не наломаете дров ни в одном языке я бы не дал.</p>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Wed, 11 Mar 2020 19:34:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138449#p138449</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138448#p138448</link>
			<description><![CDATA[<div class="quotebox"><cite>kolotilov256 пишет:</cite><blockquote><p>Почему while</p></blockquote></div><p>Потому что. Один. Действующий. Цикл.<br />А смеятся над собой будете, если поймете.</p>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Wed, 11 Mar 2020 19:29:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138448#p138448</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138447#p138447</link>
			<description><![CDATA[<p><strong>ypppu</strong>, пример кода в первом посте запусти. Он работает не так, как я от него ожидаю.</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Wed, 11 Mar 2020 19:24:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138447#p138447</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138446#p138446</link>
			<description><![CDATA[<p>Напишите какой-нибудь самый простой пример, в котором <em>SetTimer</em> ведёт себя не так, как Вы ожидали. Сложно въехать в тему.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Wed, 11 Mar 2020 18:47:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138446#p138446</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138444#p138444</link>
			<description><![CDATA[<p>Немного изменив тело программы, проблема решается конечно.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>#SingleInstance Force
#Persistent
#NoEnv

t1 := &quot;t1.txt&quot;
t2 := &quot;t2.txt&quot;
t3 := &quot;t3.txt&quot;

var := 1
settimer, met, 250
settimer, start, 250
return

start:
if (var &lt; 20)
{
	out(t1, var &quot; &lt; 20. Wait &quot;)
	sleep 500
}
else
{	
	out(t1, &quot;var is true&quot;)
	var := false
}
return

met:
var++
out(t2, var)
sleep 500
return

;

out(file, var = &quot;&quot;)
{
	if !var
		Random, var, 1000, 99999999
	FileAppend, % var &quot;`n&quot;, % file
}</code></pre></div></div></div><p>Но факт остаётся фактом. Почему while тормозит поток? И самое смешное почему это происходит, только если в другой метке есть sleep 500?</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Wed, 11 Mar 2020 17:22:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138444#p138444</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проблемы с SetTimer]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138443#p138443</link>
			<description><![CDATA[<p>Вообще цель была внедрить использование setTimer&#039;ов в более крупный проект, в котором имеются 2 главных события, которые отслеживаются двумя setTimer&#039;ами.<br />В результате обнаружения одного из главных событий, хотелось бы запустить ещё один setTimer. <br />Главная цель в этом: чтобы не помешать выполнению работы предыдущих setTimer&#039;ов.</p><p>Но я так понимаю, на автохоткее, без костылей и кучи заморочек эта проблема не решается... <br />Ибо даже банальная задержка в теле метки setTimer&#039;a уже губит все старания.</p><p>Даже если каким-то костылём (аля приоритетом или ещё чем-то) пофиксить эту проблему, где взять гарантии, что метка вновь не забагуется при каких-то других обстоятельствах? Никаких гарантий...</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Wed, 11 Mar 2020 16:48:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138443#p138443</guid>
		</item>
	</channel>
</rss>
