<?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=424517&amp;view=findpost&amp;p=3865514</guid>
        <pubDate>Wed, 11 May 2022 01:46:52 +0000</pubDate>
        <title>Перенаправить таймер и его функцию на другое ядро процессора.</title>
        <link>https://forum.sources.ru/index.php?showtopic=424517&amp;view=findpost&amp;p=3865514</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=424517&view=findpost&p=3865486'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Сергей85 &#064; <time class="tag-quote__quoted-time" datetime="2022-05-10T11:34:36+03:00">10.05.22, 08:34</time></span><div class='quote '>Так и не смог</div></div><br>
<strong class='tag-b'>Сергей85</strong>, не могу смотреть на твои мучения&#33; :rolleyes: <br>
<br>
Сделал для тебя демонстрационный проект, разбирая который, я надеюсь, ты найдешь для себя ответы на твои вопросы...<br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>MultiPulti</strong></span><br>
<br>
<img class='tag-img' src='https://majestio.info/img/stuff/multipulti.png' alt='user posted image'><br>
<br>
По кнопке [►Start] запускаются три потока. В каждом потоке есть свой таймер, который срабатывает по своему интервалу, и передает в GUI-поток свое значение. Которое, соответственно, изменяет &quot;свой&quot; QLabel. Первый поток изменяет значение 1 раз в секунду, второй поток 10 раз в секунду, а третий поток 100 раз в секунду. По нажатии кнопки [Close] потоки останавливаются и уничтожаются, после этого программа завершается.<br>
<br>
<strong class='tag-b'>MuliPulti.pro</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">QT += core gui</div><div class="code_line">&nbsp;</div><div class="code_line">greaterThan(QT_MAJOR_VERSION, 4): QT += widgets</div><div class="code_line">&nbsp;</div><div class="code_line">CONFIG += c++11</div><div class="code_line">&nbsp;</div><div class="code_line">SOURCES += \</div><div class="code_line">&nbsp;&nbsp; &nbsp;main.cpp \</div><div class="code_line">&nbsp;&nbsp; &nbsp;dialog.cpp \</div><div class="code_line">&nbsp;&nbsp; &nbsp;worker.cpp</div><div class="code_line">&nbsp;</div><div class="code_line">HEADERS += \</div><div class="code_line">&nbsp;&nbsp; &nbsp;dialog.h \</div><div class="code_line">&nbsp;&nbsp; &nbsp;worker.h</div><div class="code_line">&nbsp;</div><div class="code_line"># Default rules for deployment.</div><div class="code_line">qnx: target.path = /tmp/$${TARGET}/bin</div><div class="code_line">else: unix:!android: target.path = /opt/$${TARGET}/bin</div><div class="code_line">!isEmpty(target.path): INSTALLS += target</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
</div></div><br>
<strong class='tag-b'>main.cpp</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">#include &quot;dialog.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;QApplication&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char *argv[])</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;QApplication a(argc, argv);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dialog w;</div><div class="code_line">&nbsp;&nbsp; &nbsp;w.show();</div><div class="code_line">&nbsp;&nbsp; &nbsp;return a.exec();</div><div class="code_line">}</div></ol></div></div></div></div><br>
</div></div><br>
<strong class='tag-b'>dialog.h</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">#ifndef DIALOG_H</div><div class="code_line">#define DIALOG_H</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;QtWidgets&#62;</div><div class="code_line">#include &#60;worker.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">class Dialog : public QDialog</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Q_OBJECT</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;QLabel *L1, *L2, *L3;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;QThread &nbsp;*Thread1, *Thread2, *Thread3;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Worker *Work1, *Work2, *Work3;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;QVector &#60;QLabel *&#62; Labels;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;QPushButton *BS, *BC;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Dialog(QWidget *parent = nullptr);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public slots:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void SlotStart();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void SlotClose();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void SlotUpdate(int iNo, int iValue);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;signals:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void SigQuit();</div><div class="code_line">&nbsp;</div><div class="code_line">};</div><div class="code_line">#endif // DIALOG_H</div></ol></div></div></div></div><br>
</div></div><br>
<strong class='tag-b'>dialog.cpp</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">#include &quot;dialog.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">Dialog::Dialog(QWidget *parent)</div><div class="code_line">&nbsp;&nbsp; &nbsp;: QDialog(parent)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;QGridLayout *G = new QGridLayout;</div><div class="code_line">&nbsp;&nbsp; &nbsp;L1 = new QLabel(&quot;0&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L2 = new QLabel(&quot;0&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L3 = new QLabel(&quot;0&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Labels.push_back(L1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Labels.push_back(L2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Labels.push_back(L3);</div><div class="code_line">&nbsp;&nbsp; &nbsp;BS = new QPushButton(tr(&quot;► Start&quot;));</div><div class="code_line">&nbsp;&nbsp; &nbsp;BC = new QPushButton(tr(&quot;Close&quot;));</div><div class="code_line">&nbsp;&nbsp; &nbsp;G-&#62;addWidget(L1, 0, 0, Qt::AlignCenter);</div><div class="code_line">&nbsp;&nbsp; &nbsp;G-&#62;addWidget(L2, 0, 1, Qt::AlignCenter);</div><div class="code_line">&nbsp;&nbsp; &nbsp;G-&#62;addWidget(L3, 0, 2, Qt::AlignCenter);</div><div class="code_line">&nbsp;&nbsp; &nbsp;G-&#62;addWidget(BS, 1, 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;G-&#62;addWidget(BC, 1, 2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;setLayout(G);</div><div class="code_line">&nbsp;&nbsp; &nbsp;setMinimumSize(320, 120);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(BS, &amp;QPushButton::clicked, this, &amp;Dialog::SlotStart);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(BC, &amp;QPushButton::clicked, this, &amp;Dialog::SlotClose);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Dialog::SlotStart()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;BS-&#62;setEnabled(false);</div><div class="code_line">&nbsp;&nbsp; &nbsp;// создаем нити</div><div class="code_line">&nbsp;&nbsp; &nbsp;Thread1 = new QThread;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Thread2 = new QThread;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Thread3 = new QThread;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Work1 = new Worker(nullptr, 0, 1000);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Work2 = new Worker(nullptr, 1, 100);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Work3 = new Worker(nullptr, 2, 10);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Work1-&#62;moveToThread(Thread1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Work2-&#62;moveToThread(Thread2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Work3-&#62;moveToThread(Thread3);</div><div class="code_line">&nbsp;&nbsp; &nbsp;// коммутируем потоки с GUI потоком (и сами с собой для корректного финиша и удаления)</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Thread1, &amp;QThread::started, Work1, &amp;Worker::SlotProcess);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Thread2, &amp;QThread::started, Work2, &amp;Worker::SlotProcess);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Thread3, &amp;QThread::started, Work3, &amp;Worker::SlotProcess);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work1, &amp;Worker::SigUpdate, this, &amp;Dialog::SlotUpdate);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work2, &amp;Worker::SigUpdate, this, &amp;Dialog::SlotUpdate);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work3, &amp;Worker::SigUpdate, this, &amp;Dialog::SlotUpdate);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(this, &amp;Dialog::SigQuit, Thread1, &amp;QThread::quit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(this, &amp;Dialog::SigQuit, Thread2, &amp;QThread::quit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(this, &amp;Dialog::SigQuit, Thread3, &amp;QThread::quit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work1, &amp;Worker::SigFinished, Thread1, &amp;QThread::quit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work2, &amp;Worker::SigFinished, Thread2, &amp;QThread::quit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work3, &amp;Worker::SigFinished, Thread3, &amp;QThread::quit);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work1, &amp;Worker::SigFinished, Work1, &amp;Worker::deleteLater);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work2, &amp;Worker::SigFinished, Work2, &amp;Worker::deleteLater);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Work3, &amp;Worker::SigFinished, Work3, &amp;Worker::deleteLater);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Thread1, &amp;QThread::finished, Thread1, &amp;QThread::deleteLater);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Thread2, &amp;QThread::finished, Thread2, &amp;QThread::deleteLater);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Thread3, &amp;QThread::finished, Thread3, &amp;QThread::deleteLater);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Thread1-&#62;start();</div><div class="code_line">&nbsp;&nbsp; &nbsp;Thread2-&#62;start();</div><div class="code_line">&nbsp;&nbsp; &nbsp;Thread3-&#62;start();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Dialog::SlotClose()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;emit SigQuit();</div><div class="code_line">&nbsp;&nbsp; &nbsp;close();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Dialog::SlotUpdate(int iNo, int iValue)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;Labels[iNo]-&#62;setText(QString::number(iValue));</div><div class="code_line">}</div></ol></div></div></div></div><br>
</div></div><br>
<strong class='tag-b'>worker.h</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">#ifndef WORKER_H</div><div class="code_line">#define WORKER_H</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;QObject&#62;</div><div class="code_line">#include &#60;QTimer&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">class Worker : public QObject</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Q_OBJECT</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int Counter = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int No = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int Interval = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;QTimer *Timer;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;explicit Worker(QObject *parent = nullptr, int iNo = 0, int iInterval = 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public slots:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void SlotProcess();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void SlotUpdate();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;signals:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void SigUpdate(int No, int iValue);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void SigFinished();</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">#endif // WORKER_H</div></ol></div></div></div></div><br>
</div></div><br>
<strong class='tag-b'>worker.cpp</strong><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><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">#include &#60;QEventLoop&#62;</div><div class="code_line">#include &quot;worker.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">Worker::Worker(QObject *parent, int iNo, int iInterval)</div><div class="code_line">&nbsp;&nbsp; &nbsp;: QObject{parent}, No{iNo}, Interval{iInterval}</div><div class="code_line">{</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Worker::SlotProcess()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;QEventLoop ev;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Timer = new QTimer(this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Timer-&#62;setInterval(Interval);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(Timer, &amp;QTimer::timeout, this, &amp;Worker::SlotUpdate);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Timer-&#62;start();</div><div class="code_line">&nbsp;&nbsp; &nbsp;ev.exec();</div><div class="code_line">&nbsp;&nbsp; &nbsp;emit SigFinished();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Worker::SlotUpdate()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;Counter++;</div><div class="code_line">&nbsp;&nbsp; &nbsp;emit SigUpdate(No, Counter);</div><div class="code_line">}</div></ol></div></div></div></div><br>
</div></div><br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Некоторые комментарии</strong></span><br>
<br>
Возможно ты что-то знаешь, возможно не знаешь - поэтому пусть будет.<br>
<ol class="tag-list" type="1"><li>В коде часто используются котструкции вида B = new QPushButton(&quot;Label&quot;), вместо B = new QPushButton(this,&quot;Label&quot;). Многие, даже умудренные опытом тимлиды, утверждают, что будет утечка памяти. Но это бывает только в том случае, если мы инициализировали элемент управления, а потом про него &quot;забыли&quot;. Но, как только мы используем addWidget() или addLayout() или setLayout() или (еще есть варианты) - фрэймворк Qt сам пропишет родителя.</li><li>QThread - это оболочка для потока, которая позволяет использовать межпоточные сигналы-слоты, потому наследоваться от QThread не нужно. А, как было правильно написано в начальном сообщении, использовать moveToThread()</li><li>В пределах одного потока вызов слота происходит путем прямого вызова метода или лямбды, в случае соединения сигнала одного потока со слотом другого потока вызов преобразуется фрэймворком Qt сперва в событие, а потом в вызов метода другого потока</li><li>Всю обработку в потоке следует проводить в слотах, а в основном методе &quot;крутить&quot; QEventLoop. Это позволит потоку &quot;слышать&quot; сигналы, см. предыдущий пункт.</li></ol>Файл с проектом присоединяю.<br>
<span class="b-attach" data-size="3429" data-hits="83" data-attach-id="63455" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=63455' title='Скачать файл' target='_blank'>MuliPulti.7z</a> (, : 83)
		</span>]]></description>
        <author>Majestio</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424517&amp;view=findpost&amp;p=3865486</guid>
        <pubDate>Tue, 10 May 2022 08:34:36 +0000</pubDate>
        <title>Перенаправить таймер и его функцию на другое ядро процессора.</title>
        <link>https://forum.sources.ru/index.php?showtopic=424517&amp;view=findpost&amp;p=3865486</link>
        <description><![CDATA[Сергей85: Так и не смог. Даже на билдере было с этим проще. Qt - то еще г. В т.ч. конкретная версия Qt, 5.5.1, сейчас мешает своими багами в выделении памяти больших объемов.]]></description>
        <author>Сергей85</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424517&amp;view=findpost&amp;p=3855553</guid>
        <pubDate>Fri, 03 Dec 2021 14:00:45 +0000</pubDate>
        <title>Перенаправить таймер и его функцию на другое ядро процессора.</title>
        <link>https://forum.sources.ru/index.php?showtopic=424517&amp;view=findpost&amp;p=3855553</link>
        <description><![CDATA[Сергей85: На самом начальном этапе запоролся. Как сделать задачу минималистично и чтобы работала? Непонятно, как пользоваться созданным потоком.<br>
<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">&nbsp;&nbsp; &nbsp;//Разброс разных задач потоками по ядрам.</div><div class="code_line">&nbsp;&nbsp; &nbsp;QThread *qThread_Core2 = new QThread;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//g_qTimer_Read-&#62;moveToThread(qThread_Core2); //Если так сделать - функция, приконнекченная к таймеру, - перестает работать. При этом св-во IsActive таймера после запуска -&#62;start() - True.</div><div class="code_line">&nbsp;&nbsp; &nbsp;//connect(qThread_Core2, SIGNAL(started()), this, SLOT(vTimer_Operations()));</div><div class="code_line">&nbsp;&nbsp; &nbsp;qThread_Core2-&#62;start();</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool bbb=qThread_Core2-&#62;isRunning(); //True.</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(g_qTimer_Read, SIGNAL(timeout()), this, SLOT(vTimer_Read()));</div></ol></div></div></div></div>]]></description>
        <author>Сергей85</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      </channel>
      </rss>
	