<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Threads,SetThreadAffinityMask, und Progress Control]]></title><description><![CDATA[<p>Hallo alle!<br />
Ich habe ein Program geschrieben - Multithreads. Dort ist Klasse</p>
<pre><code class="language-cpp">CThreadDlg
</code></pre>
<p>, drei Funktionen - Process(Deklarationen):</p>
<pre><code class="language-cpp">DWORD WINAPI MyThread1(LPVOID pParam1);
DWORD WINAPI MyThread2(LPVOID pParam2);
DWORD WINAPI MyThread3(LPVOID pParam3);
</code></pre>
<p>Gründliche Beschreibung (dritte Funktion):</p>
<pre><code class="language-cpp">DWORD WINAPI MyThread3(LPVOID pParam3)
{
	CThreadDlg * pObject3 = (CThreadDlg*) pParam3;
	pObject3-&gt;m_PROGRESS3_CTRL.SetRange(0,50000);
    pObject3-&gt;m_PROGRESS3_CTRL.SetStep(1);

	for (int i=0; i&lt;50000; i++){	
		pObject3-&gt;m_PROGRESS3_CTRL.StepIt();
		pObject3-&gt;SetDlgItemInt(IDC_EDIT16, i);
		//printf(&quot;Labas %d&quot;, i);
		//(pObject-&gt;m_Edit15_CTRL) = i;

	}

	return 0;
}
</code></pre>
<p>Diese Funktionen aktiviere ich, wenn die folgende Taste drücke</p>
<pre><code class="language-cpp">void CThreadDlg::OnBnClickedButton3()
{
	HANDLE hThread[MAX_THREADS]; 
	DWORD dwThreadID[MAX_THREADS];

	for (int index=0; index&lt;MAX_THREADS;index++) 
	{  
		hThread[index] = 
			CreateThread( NULL, 
									   0, 
									   MyThread3,

									   (LPVOID)this,
									   0, 
									   &amp;dwThreadID[index]
		); 
		if( bThread3Run == 0) //START state
		{
			SetDlgItemTextW(IDC_BUTTON3, L&quot;PAUSE&quot;);
			if(SetThreadAffinityMask(hThread[index], m_COMBO3_CTRL.GetCurSel( )+1)== NULL)
				MessageBoxW(L&quot;Error in Set of Processors&quot;, L&quot;Error&quot;, 0); 
					int nummerActualCombo3 = m_COMBO6_CTRL.GetCurSel( );
			int prioritat3=0;

			switch(nummerActualCombo3)
			{
				case 0:
					prioritat3 = 1;
					break;
				case 1:
					prioritat3 = -1;
					break;
				case 2:
					prioritat3 = 2;
					break;
				case 3:
					prioritat3 = -15;
					break;
				case 4:
					prioritat3 = -2;
					break;
				case 5:
					prioritat3 = 0;
					break;
				case 6:
					prioritat3 = 15;
					break;
			}
			SetThreadPriority(hThread[index],prioritat3);
			bThread3Run = 1;
		}
		else if (bThread3Run == 1)//PAUSE state
		{
			SetDlgItemTextW(IDC_BUTTON3, L&quot;RESUME&quot;);
			int klaida = SuspendThread(hThread[index]);
			SetDlgItemInt(IDC_EDIT16, klaida);
			bThread3Run = 2;
		}
		else if (bThread3Run == 2)//RESUME state
		{
			SetDlgItemTextW(IDC_BUTTON3, L&quot;START&quot;);
			ResumeThread(hThread[index]);
			bThread3Run = 0;
		}
	}
	for (int index=0; index&lt;MAX_THREADS; index++)
		CloseHandle(hThread[index]);
	UpdateData(TRUE);
}
</code></pre>
<p>Hier ist ein Problem. in Funktion CreateThread() wie Argument hinweise ich</p>
<pre><code class="language-cpp">(LPVOID)this
</code></pre>
<p>- Nummer des Threads. Alles arbeitet bis dann, wenn ich in der Funktionenbeschreibung diese Funktion fur Progress Control</p>
<pre><code class="language-cpp">pObject3-&gt;m_PROGRESS3_CTRL.SetRange(0,50000);
pObject3-&gt;m_PROGRESS3_CTRL.SetStep(1);
pObject3-&gt;m_PROGRESS3_CTRL.StepIt();
</code></pre>
<p>verwende. Danach SetThreadAffinityMask() funktioniert nicht. Was ist denn los?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185861/threads-setthreadaffinitymask-und-progress-control</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 14:00:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185861.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Jul 2007 10:15:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads,SetThreadAffinityMask, und Progress Control on Mon, 02 Jul 2007 10:15:03 GMT]]></title><description><![CDATA[<p>Hallo alle!<br />
Ich habe ein Program geschrieben - Multithreads. Dort ist Klasse</p>
<pre><code class="language-cpp">CThreadDlg
</code></pre>
<p>, drei Funktionen - Process(Deklarationen):</p>
<pre><code class="language-cpp">DWORD WINAPI MyThread1(LPVOID pParam1);
DWORD WINAPI MyThread2(LPVOID pParam2);
DWORD WINAPI MyThread3(LPVOID pParam3);
</code></pre>
<p>Gründliche Beschreibung (dritte Funktion):</p>
<pre><code class="language-cpp">DWORD WINAPI MyThread3(LPVOID pParam3)
{
	CThreadDlg * pObject3 = (CThreadDlg*) pParam3;
	pObject3-&gt;m_PROGRESS3_CTRL.SetRange(0,50000);
    pObject3-&gt;m_PROGRESS3_CTRL.SetStep(1);

	for (int i=0; i&lt;50000; i++){	
		pObject3-&gt;m_PROGRESS3_CTRL.StepIt();
		pObject3-&gt;SetDlgItemInt(IDC_EDIT16, i);
		//printf(&quot;Labas %d&quot;, i);
		//(pObject-&gt;m_Edit15_CTRL) = i;

	}

	return 0;
}
</code></pre>
<p>Diese Funktionen aktiviere ich, wenn die folgende Taste drücke</p>
<pre><code class="language-cpp">void CThreadDlg::OnBnClickedButton3()
{
	HANDLE hThread[MAX_THREADS]; 
	DWORD dwThreadID[MAX_THREADS];

	for (int index=0; index&lt;MAX_THREADS;index++) 
	{  
		hThread[index] = 
			CreateThread( NULL, 
									   0, 
									   MyThread3,

									   (LPVOID)this,
									   0, 
									   &amp;dwThreadID[index]
		); 
		if( bThread3Run == 0) //START state
		{
			SetDlgItemTextW(IDC_BUTTON3, L&quot;PAUSE&quot;);
			if(SetThreadAffinityMask(hThread[index], m_COMBO3_CTRL.GetCurSel( )+1)== NULL)
				MessageBoxW(L&quot;Error in Set of Processors&quot;, L&quot;Error&quot;, 0); 
					int nummerActualCombo3 = m_COMBO6_CTRL.GetCurSel( );
			int prioritat3=0;

			switch(nummerActualCombo3)
			{
				case 0:
					prioritat3 = 1;
					break;
				case 1:
					prioritat3 = -1;
					break;
				case 2:
					prioritat3 = 2;
					break;
				case 3:
					prioritat3 = -15;
					break;
				case 4:
					prioritat3 = -2;
					break;
				case 5:
					prioritat3 = 0;
					break;
				case 6:
					prioritat3 = 15;
					break;
			}
			SetThreadPriority(hThread[index],prioritat3);
			bThread3Run = 1;
		}
		else if (bThread3Run == 1)//PAUSE state
		{
			SetDlgItemTextW(IDC_BUTTON3, L&quot;RESUME&quot;);
			int klaida = SuspendThread(hThread[index]);
			SetDlgItemInt(IDC_EDIT16, klaida);
			bThread3Run = 2;
		}
		else if (bThread3Run == 2)//RESUME state
		{
			SetDlgItemTextW(IDC_BUTTON3, L&quot;START&quot;);
			ResumeThread(hThread[index]);
			bThread3Run = 0;
		}
	}
	for (int index=0; index&lt;MAX_THREADS; index++)
		CloseHandle(hThread[index]);
	UpdateData(TRUE);
}
</code></pre>
<p>Hier ist ein Problem. in Funktion CreateThread() wie Argument hinweise ich</p>
<pre><code class="language-cpp">(LPVOID)this
</code></pre>
<p>- Nummer des Threads. Alles arbeitet bis dann, wenn ich in der Funktionenbeschreibung diese Funktion fur Progress Control</p>
<pre><code class="language-cpp">pObject3-&gt;m_PROGRESS3_CTRL.SetRange(0,50000);
pObject3-&gt;m_PROGRESS3_CTRL.SetStep(1);
pObject3-&gt;m_PROGRESS3_CTRL.StepIt();
</code></pre>
<p>verwende. Danach SetThreadAffinityMask() funktioniert nicht. Was ist denn los?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316697</guid><dc:creator><![CDATA[ontos]]></dc:creator><pubDate>Mon, 02 Jul 2007 10:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to Threads,SetThreadAffinityMask, und Progress Control on Mon, 02 Jul 2007 10:45:04 GMT]]></title><description><![CDATA[<p>1. Vergiss SetThreadAffinityMask einfach. Windows weiß selbst besser wie es Threads zuweist und vorhält.<br />
2. Fenster Objekte die von CWnd's abgeleitet sind darfst Du nur in dem Thread verwenden, in dem diese auch angelegt wurden! Andernfalls hagelt es oft genug von ASSERT's<br />
3. Wenn Du ein Fenster Objekt aus einem Thread ansprichst, der das Fenster nicht erzeugt hat, werden alle Fensterbefehle/Nachrichten in die Message Queue eingestellt. Deine ganzen Fenster-Operationen im Thread erzeugen eine Fensternachricht die in die Queue eingestellt werden und anschließend wartet der Thread auf die Erledigung dieser Nachricht. Läuft keine Nachrichtenschleife, bzw. wird die Nachricht nicht beantwortet, steht der Thread für immer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316740</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 02 Jul 2007 10:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to Threads,SetThreadAffinityMask, und Progress Control on Tue, 03 Jul 2007 13:22:19 GMT]]></title><description><![CDATA[<p>vielen Dank fur die Antwort! Aber ich moechte etwas zusatzlich sagen:<br />
1. SetAffienityMask muss ich benutzen, weil solche Aufgabe ich habe, deswegen soll ich unbedingt das erledigen.<br />
2. Ich habe noch die Probleme mit den SuspndThread und ResumeThread. Diese Funktionen arbeitet gar nicht... Aber ich bekomme keine Fehlermeldung. Varscheinlich haben Sie bemerkt, dass im Kode ich 3 Tasten implementiert habe - START, PAUSE, RESUME. Also, ich verstehe nicht, warum das nicht funktioniert. Könnten Sie etwas empfehlen ( Lösung, oder andere Funktionion...)<br />
Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317511</guid><dc:creator><![CDATA[ontos]]></dc:creator><pubDate>Tue, 03 Jul 2007 13:22:19 GMT</pubDate></item><item><title><![CDATA[Reply to Threads,SetThreadAffinityMask, und Progress Control on Tue, 03 Jul 2007 13:24:23 GMT]]></title><description><![CDATA[<p>1. Lass SetThreadAfinityMask einfach bleiben. Es bringt nichts. Auch wenn das einer sagt.<br />
2. SuspendThread ist tödlich. Arbeite besser mit Events u einen Thread anzuhalten.<br />
<a href="http://blog.kalmbachnet.de/?postid=6" rel="nofollow">http://blog.kalmbachnet.de/?postid=6</a></p>
<p>Ansonsten, was sagt GetLastError?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317515</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 03 Jul 2007 13:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to Threads,SetThreadAffinityMask, und Progress Control on Thu, 05 Jul 2007 12:44:18 GMT]]></title><description><![CDATA[<p>ja, mit SuspendThread() und ResumeThread() funktioniert alles gar nicht gut... Aber das ist egal.<br />
Es ist mehr interessant, was genau passiert, wenn ich 2 verschiedene Threads für z.B. Prozessor 2 die Aufgabe beauftrage. Ich habe bemerkt, dass nur dieser Prozessor arbeitet. Das bedeutet, dass Prozessor 2 beide Threads abwechselnd bearbeitet?</p>
<p>Also, und eine Frage aus anderem Gebiet (aber in dieser Arbeit):<br />
Ich rechne solche Algorithmus 2^N, wo N kann sehr gross sein. Die Angaben speichere ich in einer Array. Dann möchte ich diese Array in &quot;Edit Box&quot; darstellen. Aber wieso? In &quot;Edit Box&quot; Properties habe ich <strong>Multiline</strong> auf TRUE gewählt. Also endlich habe ich ein Array (z.B. A[1000]). Und wieso in einem Takt ich dass darstellen kann?</p>
<pre><code class="language-cpp">pObject2-&gt;SetDlgItemInt(IDC_EDIT2, ???);
</code></pre>
<p>Mit der Schleife ...A[i]... geht es nicht, natürlich..</p>
<p>Vielen Dank!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318907</guid><dc:creator><![CDATA[ontos]]></dc:creator><pubDate>Thu, 05 Jul 2007 12:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to Threads,SetThreadAffinityMask, und Progress Control on Fri, 06 Jul 2007 21:41:49 GMT]]></title><description><![CDATA[<p>Also, ich habe die Lösung gefunden. Ich mache Edit Box &quot;CString&quot; Format. Dann benutze folgende variablen:<br />
CString s,x;<br />
und Format() Funktion</p>
<pre><code class="language-cpp">t.Format(&quot;%d&quot;,A[i]
</code></pre>
<p>aber ich bekomme diesen Fehler:</p>
<p>threaddlg.cpp(58) : error C2664: 'void ATL::CStringT&lt;BaseType,StringTraits&gt;::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [3]' to 'const wchar_t *'</p>
<p>Also, was kann ich tun?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320003</guid><dc:creator><![CDATA[ontos]]></dc:creator><pubDate>Fri, 06 Jul 2007 21:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to Threads,SetThreadAffinityMask, und Progress Control on Fri, 06 Jul 2007 22:02:58 GMT]]></title><description><![CDATA[<p>wenn jemand dieses Problem bekommt, muss so machen.<br />
Format(_T(&quot;%d&quot;),...)<br />
_T() konvertiert Kode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320017</guid><dc:creator><![CDATA[ontos]]></dc:creator><pubDate>Fri, 06 Jul 2007 22:02:58 GMT</pubDate></item></channel></rss>