<?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]]></title><description><![CDATA[<p>Hi,<br />
Hab heute meine ersten Erfahrungen mit Thread unter Win gemacht dazu hab ich ein paar Fragen.<br />
Hier erstmal der Bsp. Code mit dem ich es realisiert habe:</p>
<pre><code>#include &lt;Windows.h&gt;
 #include &lt;iostream.h&gt;

unsigned long __stdcall funtion ()
{
for(;;) {
    Sleep(300);
    cout &lt;&lt; &quot;thread&quot; &lt;&lt; endl;
}
}

 int main(int argc, char *argv[])
 {
DWORD servtId;
HANDLE servThread;
servThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)funtion,NULL,0,&amp;servtId);
for(;;) {
    Sleep(300);
cout &lt;&lt; &quot;ABC&quot; &lt;&lt; endl;
}
system(&quot;PAUSE&quot;);
     return 1;
 }
</code></pre>
<p>So nun zu den Fragen:<br />
1.) In der Console schreibt er mir threadABC oder ABCthread aber ich mach doch jweils mit endl eine neue Zeile, sind das evenutell die nebenwirkungen von den threads.<br />
2.) Ist es Sinnvoll den thread am schluss vom Programm mit ExitThread zu schließen weil wenn man porg gekillt wird ist der Thread ja auch weg!<br />
3.) Habe das so hinbekommen weil ich in der MSDN gelesen habe aber wie mache ich sowas in Linux?</p>
<p>MFG RedUX <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188284/threads</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 02:17:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188284.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Jul 2007 22:58:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads on Sun, 29 Jul 2007 22:58:50 GMT]]></title><description><![CDATA[<p>Hi,<br />
Hab heute meine ersten Erfahrungen mit Thread unter Win gemacht dazu hab ich ein paar Fragen.<br />
Hier erstmal der Bsp. Code mit dem ich es realisiert habe:</p>
<pre><code>#include &lt;Windows.h&gt;
 #include &lt;iostream.h&gt;

unsigned long __stdcall funtion ()
{
for(;;) {
    Sleep(300);
    cout &lt;&lt; &quot;thread&quot; &lt;&lt; endl;
}
}

 int main(int argc, char *argv[])
 {
DWORD servtId;
HANDLE servThread;
servThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)funtion,NULL,0,&amp;servtId);
for(;;) {
    Sleep(300);
cout &lt;&lt; &quot;ABC&quot; &lt;&lt; endl;
}
system(&quot;PAUSE&quot;);
     return 1;
 }
</code></pre>
<p>So nun zu den Fragen:<br />
1.) In der Console schreibt er mir threadABC oder ABCthread aber ich mach doch jweils mit endl eine neue Zeile, sind das evenutell die nebenwirkungen von den threads.<br />
2.) Ist es Sinnvoll den thread am schluss vom Programm mit ExitThread zu schließen weil wenn man porg gekillt wird ist der Thread ja auch weg!<br />
3.) Habe das so hinbekommen weil ich in der MSDN gelesen habe aber wie mache ich sowas in Linux?</p>
<p>MFG RedUX <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334668</guid><dc:creator><![CDATA[ReduX]]></dc:creator><pubDate>Sun, 29 Jul 2007 22:58:50 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Sun, 29 Jul 2007 23:26:46 GMT]]></title><description><![CDATA[<p>ReduX schrieb:</p>
<blockquote>
<p>1.) In der Console schreibt er mir threadABC oder ABCthread aber ich mach doch jweils mit endl eine neue Zeile, sind das evenutell die nebenwirkungen von den threads.<br />
2.) Ist es Sinnvoll den thread am schluss vom Programm mit ExitThread zu schließen weil wenn man porg gekillt wird ist der Thread ja auch weg!<br />
3.) Habe das so hinbekommen weil ich in der MSDN gelesen habe aber wie mache ich sowas in Linux?</p>
</blockquote>
<p>Zu 1): Ja, das sind leider Nebenwirkungen - sollte man bei Threads vermeiden, dazu kannst du dir mal Mutexe anschauen. Bevor du etwas schreibst, guckst du ob der Mutex frei ist bzw wartest darauf, dann &quot;lockst&quot;, also blockierst ihn, schreibst deinen Text plus Leerzeile und gibst ihn wieder frei. So wird garantiert, dass nur ein Objekt gleichzeitig etwas machen kann, z.B. schreiben.</p>
<p>Zu 2): Da kommen oft Leute und sagen, ExitThread wäre böse. Inwieweit das stimmt, kann ich kein Stück beurteilen, aber es ist definitiv viel schöner, wenn dein Thread sich selber beendet - durch ein return oder durch das erreichen der letzten Zeile.</p>
<p>Zu 3): Ja, das wüsste ich auch gerne <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334677</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 29 Jul 2007 23:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 00:06:30 GMT]]></title><description><![CDATA[<p>Hi,<br />
Danke für deine Antwort!</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Zu 3): Ja, das wüsste ich auch gerne <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ich hab noch mal ein bisschen gegoogelt und das hier gefunden:<br />
[url]<br />
<a href="http://www.risc.uni-linz.ac.at/people/schreine/papers/rt++-linuxmag1/main.html%5B/url%5D" rel="nofollow">http://www.risc.uni-linz.ac.at/people/schreine/papers/rt++-linuxmag1/main.html[/url]</a><br />
Ist zienlich gut erklärt konnte es aber selber nochnicht testen!</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Zu 1): Ja, das sind leider Nebenwirkungen - sollte man bei Threads vermeiden, dazu kannst du dir mal Mutexe anschauen. Bevor du etwas schreibst, guckst du ob der Mutex frei ist bzw wartest darauf, dann &quot;lockst&quot;, also blockierst ihn, schreibst deinen Text plus Leerzeile und gibst ihn wieder frei. So wird garantiert, dass nur ein Objekt gleichzeitig etwas machen kann, z.B. schreiben.</p>
</blockquote>
<p>Zum ausgeben brauche ich die Threads nicht, ich brauche sie für einen Clienten der empfangen soll während er Sendet. Dazu brauch ich Mutexe nicht oder?<br />
Schöne Nacht noch.<br />
MFG ReduX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334691</guid><dc:creator><![CDATA[ReduX]]></dc:creator><pubDate>Mon, 30 Jul 2007 00:06:30 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 00:52:23 GMT]]></title><description><![CDATA[<p>ReduX schrieb:</p>
<blockquote>
<p>3.) Habe das so hinbekommen weil ich in der MSDN gelesen habe aber wie mache ich sowas in Linux?</p>
</blockquote>
<p>Für sowas empfehle ich immer gerne plattformunabhängige Bibliotheken wie die von Boost.</p>
<p>Und dort gibt es auch eine Thread-Library, zu der es von kharchi auch eine ganz nette Einleitung gibt:</p>
<p><a href="http://www.kharchi.de/threads.html" rel="nofollow">http://www.kharchi.de/threads.html</a></p>
<p>PS: iostream.h ist veraltet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Nutz lieber iostream + using namespace std; oder schreib vor die Funktionen aus iostream std::</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334695</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Mon, 30 Jul 2007 00:52:23 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 01:19:44 GMT]]></title><description><![CDATA[<p>Hi,<br />
Danke für deine Antwort werde mir das mal anschauen mit den libs.</p>
<p>The-Kenny schrieb:</p>
<blockquote>
<p>PS: iostream.h ist veraltet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Nutz lieber iostream + using namespace std; oder schreib vor die Funktionen aus iostream std::</p>
</blockquote>
<p>Ich weiß <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
War ja nur ein Bsp. Code <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>MFG ReduX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334700</guid><dc:creator><![CDATA[ReduX]]></dc:creator><pubDate>Mon, 30 Jul 2007 01:19:44 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 06:59:21 GMT]]></title><description><![CDATA[<p>@1: Solange die beteiligten Threads nicht auf gemeinsame Daten zugreifen wollen, erübrigt sich die Synchronisation. Erst wenn du ein Objekt hast, das beide verwenden wollen (z.B. cout in deinem Beispielcode), mußt du dir darüber Gedanken machen).</p>
<p>@2: Threads von außen abzuschießen IST böse - auf die Weise nimmst du ihm die Chance, hinter sich aufzuräumen. Besser ist es, dem Thread von außen zu sagen, daß er jetzt Feierabend machen soll - und dann zu warten, bis er sich beendet hat.<br />
(btw wird dein Hauptprogramm auch endlos weiterlaufen ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334739</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Jul 2007 06:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 11:35:46 GMT]]></title><description><![CDATA[<p>Hallo ReduX,</p>
<p>Wie The-Kenny schon sagte würde auch ich hier auf jeden Fall den Einsatz der <a href="http://www.boost.org/doc/html/thread.html" rel="nofollow">boost.thread</a> Library empfehlen. Eine &quot;boost&quot;-Version Deines Programms würde etwa so aussehen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;boost/thread/thread.hpp&gt;
#include &lt;boost/bind.hpp&gt;  // Zl.4
#include &lt;Windows.h&gt;        // Sleep

void function( const std::string&amp; txt, int cnt ) // Zl.7
{
    using namespace std;
    for( ; cnt; --cnt )
    {
        Sleep(300);
        cout &lt;&lt; txt &lt;&lt; endl; // Zl.13
    }
}
int main()
{
    boost::thread thrd( boost::bind( &amp;function, &quot;thread&quot;, 20 ) );
    function( &quot;ABC&quot;, 20 );
    thrd.join();
    return 0;
}
</code></pre>
<p>inklusive sauberen Beenden des Programms.</p>
<p>Wenn Du jetzt vor den Zeilen 4, 7 und 13 noch folgendes einfügst:</p>
<pre><code class="language-cpp">#include &lt;boost/thread/mutex.hpp&gt; // 4
boost::mutex io_guard; // 7
        boost::mutex::scoped_lock lock( io_guard ); // 13; hinter Sleep!
</code></pre>
<p>so werden die Ausgaben auch nicht mehr vermischt.</p>
<p>Ab boost 1.34 ist die <a href="http://www.boost.org/more/getting_started/index.html" rel="nofollow">Installation von boost</a> auch wesentlich besser erklärt.</p>
<p>Bem.: dieses Programm sollte so auch unter Linux laufen, wenn man das #include &lt;Windows.h&gt; ersetzt, versteht sich von selbst ...</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334880</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 30 Jul 2007 11:35:46 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 11:41:05 GMT]]></title><description><![CDATA[<p>Eine andere Möglichkeit die mir eben eingefallen ist, sind die asynchronen Timer von boost.asio, dann wärst du vollkommen Plattform-unabhängig.</p>
<p><a href="http://asio.sourceforge.net/boost_asio_0_3_7/libs/asio/doc/tutorial/tuttimer3.html" rel="nofollow">http://asio.sourceforge.net/boost_asio_0_3_7/libs/asio/doc/tutorial/tuttimer3.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334881</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Mon, 30 Jul 2007 11:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 12:26:20 GMT]]></title><description><![CDATA[<p>Hi,<br />
Ne Frage zu boost.<br />
Ich möchte Code::Blocks verwenden.<br />
Kann ich dann trozdem den installer von Boost Consulting nehmen?<br />
Weil wenn ich die sourcen selber compilen muss, da steig ich nicht so ganz durch!</p>
<p>MFG ReduX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334902</guid><dc:creator><![CDATA[ReduX]]></dc:creator><pubDate>Mon, 30 Jul 2007 12:26:20 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 12:43:06 GMT]]></title><description><![CDATA[<p>ReduX schrieb:</p>
<blockquote>
<p>Ich möchte Code::Blocks verwenden.<br />
Kann ich dann trozdem den installer von Boost Consulting nehmen?</p>
</blockquote>
<p>Sollte IMHO eigentlich nicht möglich sein (unterschiedliche Compiler =&gt; Unterschiedliches Binärformat).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334918</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 30 Jul 2007 12:43:06 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 12:54:51 GMT]]></title><description><![CDATA[<p>Naja, was haste denn für einen Compiler in COdeblocks? Benutzt du den MS-Compiler?</p>
<p>Aber ganz ehrlich: so schwer ist das nicht! Die Anleitung ist zwar lang, aber da ist viel bla bla mit drin. Und die Eigentliche Arbeit sind nur ein paar Handgriffe. Ich würde es wenigstens nach der Anleitung probieren. Einfach nur probieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334926</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 30 Jul 2007 12:54:51 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 14:41:27 GMT]]></title><description><![CDATA[<p>Sehe ich auch so, im Grunde ist es bei Code::Blocks mit Mingw ein einziger Befehl, etwas warten und danach ein paar Dateien verschieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335018</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Mon, 30 Jul 2007 14:41:27 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 18:34:44 GMT]]></title><description><![CDATA[<p>Hi,<br />
Habe es nun mit boost geschaft, die Installation war wirklich einfach (hätte ich nicht gedacht).<br />
Hab da noch ein paar Fragen:<br />
1.) Wenn ich nun Threads einbaue benötige ich später eine .dll von boost, doch der name &quot;boost_thread-mgw34-mt-1_34_1.dll&quot; ist mir zu lang ich würde gerne das die Datei &quot;thread.dll&quot; heißt, wie mache ich das?.<br />
2.) Was bedeutet beim Bsp. Code am schluss das thrd.join(); ? Beendet es den Thread? Oder besser gibt es eine gute Doku für boost?<br />
3.) Was bringt mir boost außer Threads sonst noch, als ich im boost verzeichnis rumgeschaut habe sind mir sachen wie iostreams etc. aufgefallen, dass sind aber sachen die bei C++ standart sind!</p>
<p>MFG ReduX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335183</guid><dc:creator><![CDATA[ReduX]]></dc:creator><pubDate>Mon, 30 Jul 2007 18:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 19:20:38 GMT]]></title><description><![CDATA[<p>ReduX schrieb:</p>
<blockquote>
<p>1.) Wenn ich nun Threads einbaue benötige ich später eine .dll von boost, doch der name &quot;boost_thread-mgw34-mt-1_34_1.dll&quot; ist mir zu lang ich würde gerne das die Datei &quot;thread.dll&quot; heißt, wie mache ich das?.<br />
2.) Was bedeutet beim Bsp. Code am schluss das thrd.join(); ? Beendet es den Thread? Oder besser gibt es eine gute Doku für boost?<br />
3.) Was bringt mir boost außer Threads sonst noch, als ich im boost verzeichnis rumgeschaut habe sind mir sachen wie iostreams etc. aufgefallen, dass sind aber sachen die bei C++ stan**** sind!</p>
</blockquote>
<p>1. Du kannst bjam beim aufrufen noch ein Parameter mitgeben, dann benennt er die Dateien einfach libboost_<em>.a und boost_</em>.dll.<br />
2. Der Befehl thread.join() wartet so lange, bis der Thread fertig ist.<br />
3. boost.iostreams ist kein Ersatz für die normalen Ein- und Ausgabestreams, eine komplette Doku gibt es <a href="http://www.boost.org/libs/libraries.htm" rel="nofollow">hier</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335205</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Mon, 30 Jul 2007 19:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to Threads on Mon, 30 Jul 2007 21:34:51 GMT]]></title><description><![CDATA[<p>1.) Den Namen würde ich nicht unbedigt ändern. Hat den Sinn, das die ganzen Libs nämlich in einem Verzeichnis drin sind, und du mit mehreren Boost-Versionen arbeiten kannst. Gut, für das Deployment kann man natürlich den Namen ändern.<br />
2.) join tritt dem Thread bei und kehrt erst zurück, wenn der Thread beendet wird.<br />
3.) Was boost alles kann, steht in der Dokumentation. Boost ist seeeehr umfangreich, man braucht wahrscheinlich nicht mal die hälfte davon. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Schau mal hier: <a href="http://de.wikipedia.org/wiki/Boost" rel="nofollow">http://de.wikipedia.org/wiki/Boost</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335295</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 30 Jul 2007 21:34:51 GMT</pubDate></item></channel></rss>