<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416344&amp;view=findpost&amp;p=3815276</guid>
        <pubDate>Wed, 20 Nov 2019 07:05:18 +0000</pubDate>
        <title>Приоритет процесса и приоритет потоков</title>
        <link>https://forum.sources.ru/index.php?showtopic=416344&amp;view=findpost&amp;p=3815276</link>
        <description><![CDATA[^D^ima: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416344&view=findpost&p=3815264'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>manemale &#064; <time class="tag-quote__quoted-time" datetime="2019-11-20T07:23:50+03:00">20.11.19, 04:23</time></span><div class='quote '>Другими словами, Код2 оставить, а Код1 можно убрать?</div></div><br>
Судя по Process Explorer&#39;у если у процесса поставить класс приоритета, то такой-же становится у его потоков<br>
<br>
И вообще, возможно меня поправят коллеги, но твой код1 не рабочий от слова совсем:<br>
1 Он не создает таймеры в каждом потоке, а просто создает отдельные пустые потоки(Form1.Timer1.Enabled:=true; не означает что таймер резко пересоздался в потоке1, его нужно создавать как и поток отдельно, в реалтайме)<br>
2 Твой код While not Terminated do Form1.Timer1.Enabled:=true; зацикливает enable таймера, что приводит к отжиранию процессора на 70-80% у пустого приложения<br>
Так что да, код1 нужно убрать]]></description>
        <author>^D^ima</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416344&amp;view=findpost&amp;p=3815273</guid>
        <pubDate>Wed, 20 Nov 2019 06:59:07 +0000</pubDate>
        <title>Приоритет процесса и приоритет потоков</title>
        <link>https://forum.sources.ru/index.php?showtopic=416344&amp;view=findpost&amp;p=3815273</link>
        <description><![CDATA[Fr0sT: Код таймеров выполняется в главном потоке, естественно, что прога подвисает. Разноси &quot;действия&quot; по фоновым потокам]]></description>
        <author>Fr0sT</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416344&amp;view=findpost&amp;p=3815264</guid>
        <pubDate>Wed, 20 Nov 2019 04:23:50 +0000</pubDate>
        <title>Приоритет процесса и приоритет потоков</title>
        <link>https://forum.sources.ru/index.php?showtopic=416344&amp;view=findpost&amp;p=3815264</link>
        <description><![CDATA[manemale: Добрый день&#33; Имеется несколько таймеров, каждый из которых выполняет большое количество действий и с малым интервалом, иногда такое приложение подвисает. Можно для каждого таймера создать поток с высоким приоритетом. Например, для двух таймеров:<br>
<br>
Код1:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">TPotok1=class (TThRead)</div><div class="code_line">protected</div><div class="code_line">procedure Execute();override;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">TPotok2=class (TThRead)</div><div class="code_line">protected</div><div class="code_line">procedure Execute();override;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">Potok1: TPotok1;</div><div class="code_line">Potok2: TPotok2;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TPotok1.Execute();</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;While not Terminated do Form1.Timer1.Enabled:=true;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TPotok2.Execute();</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;While not Terminated do Form1.Timer2.Enabled:=true;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormCreate(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Potok1:=TPotok1.Create(false);</div><div class="code_line">&nbsp;&nbsp;Potok1.Priority:=tpHighest;</div><div class="code_line">&nbsp;&nbsp;Potok2:=TPotok2.Create(false);</div><div class="code_line">&nbsp;&nbsp;Potok2.Priority:=tpHighest;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Potok1.Terminate;</div><div class="code_line">&nbsp;&nbsp;Potok2.Terminate;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.Timer1Timer(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;//действие таймера 1</div><div class="code_line">&nbsp;&nbsp;Timer1.Enabled:=false;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.Timer2Timer(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;//действие таймера 2</div><div class="code_line">&nbsp;&nbsp;Timer2.Enabled:=false;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Как вариант, можно для приложения задать высокий приоритет процесса:<br>
<br>
Код2:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">SetPriorityClass(GetCurrentProcess,HIGH_PRIORITY_CLASS);</div></ol></div></div></div></div><br>
<br>
Прочёл в литературе, что потоки получают приоритеты на базе классов приоритета своих процессов. Означает ли это, что если задать высокий приоритет процесса, то все таймеры будут работать с высоким приоритетом и в таком случае не надо заморачиваться с приоритетами потоков? Другими словами, Код2 оставить, а Код1 можно убрать?]]></description>
        <author>manemale</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      </channel>
      </rss>
	