<?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[QThread: Zugriff auf Array aus mehreren Threads]]></title><description><![CDATA[<p>Hallo,<br />
ich versuche ein Programm schneller zu machen, indem ich mal mehr als nur 50% Leistung von meinem Dualcore-Prozessor verlange...</p>
<p>Pseudocode:</p>
<pre><code>char *readstring;
readstring = new char[512];
char writestring;
writestring = new char[512];

//512 Zeichen in readstring einlesen

thread a(); //die klasse thread ist abgeleitet von qthread
thread b();

a.start();
b.start();

//a liest in den ersten 256 feldern und schreibt in den ersten 256 feldern von writestring
//b liest in den zweiten 256 feldern und schreibt in den zweiten 256 feldern von writestring

a.wait();
b.wait();
</code></pre>
<p>mein Programm bricht nach einer zufälligen bearbeiteten Datenmenge ohne fehlermeldung ab. es werden so etwa 25 - 80 MiB bearbeitet</p>
<p>weiß jemand warum?<br />
darf ich nicht aus mehreren threads auf ein array (versch. felder!!!) zugreifen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268788/qthread-zugriff-auf-array-aus-mehreren-threads</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 15:12:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268788.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Jun 2010 13:53:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to QThread: Zugriff auf Array aus mehreren Threads on Mon, 14 Jun 2010 13:53:42 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich versuche ein Programm schneller zu machen, indem ich mal mehr als nur 50% Leistung von meinem Dualcore-Prozessor verlange...</p>
<p>Pseudocode:</p>
<pre><code>char *readstring;
readstring = new char[512];
char writestring;
writestring = new char[512];

//512 Zeichen in readstring einlesen

thread a(); //die klasse thread ist abgeleitet von qthread
thread b();

a.start();
b.start();

//a liest in den ersten 256 feldern und schreibt in den ersten 256 feldern von writestring
//b liest in den zweiten 256 feldern und schreibt in den zweiten 256 feldern von writestring

a.wait();
b.wait();
</code></pre>
<p>mein Programm bricht nach einer zufälligen bearbeiteten Datenmenge ohne fehlermeldung ab. es werden so etwa 25 - 80 MiB bearbeitet</p>
<p>weiß jemand warum?<br />
darf ich nicht aus mehreren threads auf ein array (versch. felder!!!) zugreifen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1912191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1912191</guid><dc:creator><![CDATA[sudo rm -rf]]></dc:creator><pubDate>Mon, 14 Jun 2010 13:53:42 GMT</pubDate></item><item><title><![CDATA[Reply to QThread: Zugriff auf Array aus mehreren Threads on Mon, 14 Jun 2010 14:00:57 GMT]]></title><description><![CDATA[<blockquote>
<p>darf ich nicht aus mehreren threads auf ein array (versch. felder!!!) zugreifen</p>
</blockquote>
<p>doch solang es verschiedene Felder sind ist das kein Problem.</p>
<p>sudo rm -rf schrieb:</p>
<blockquote>
<p>mein Programm bricht nach einer zufälligen bearbeiteten Datenmenge ohne fehlermeldung ab. es werden so etwa 25 - 80 MiB bearbeitet</p>
</blockquote>
<p>Hast du mal n Debugger an den Prozess gehängt? sagt der irgendwas? Breakpoints vor die Enden der Threads setzen, dann siehst du ob du irgendwo n Logikfehler drin hast und die Threads ordentlich verlassen werden oder ob da tatsächlich irgendeine Katastrophe passiert.<br />
auch zu beachten: statische variablen in Funktionen, globale variablen usw. die von den gemeinsam benutzten Funktionen benutzt werden etc. sind alle nicht threadsafe.<br />
Vielmehr kann man mit den Infos die du gegeben hast dazu nicht sagen denke ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1912196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1912196</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 14 Jun 2010 14:00:57 GMT</pubDate></item><item><title><![CDATA[Reply to QThread: Zugriff auf Array aus mehreren Threads on Mon, 14 Jun 2010 14:13:12 GMT]]></title><description><![CDATA[<p>mhh, danke für die schnelle antwort!<br />
was ist mit variablen, die ich an funktionen übergebe?</p>
<pre><code>void fkt(int blub){...}
//zugriff von a und b auf fkt(3)
</code></pre>
<p>sind die threadsafe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1912206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1912206</guid><dc:creator><![CDATA[sudo rm -rf]]></dc:creator><pubDate>Mon, 14 Jun 2010 14:13:12 GMT</pubDate></item><item><title><![CDATA[Reply to QThread: Zugriff auf Array aus mehreren Threads on Mon, 14 Jun 2010 14:19:44 GMT]]></title><description><![CDATA[<p>sudo rm -rf schrieb:</p>
<blockquote>
<p>mhh, danke für die schnelle antwort!<br />
was ist mit variablen, die ich an funktionen übergebe?</p>
<pre><code>void fkt(int blub){...}
//zugriff von a und b auf fkt(3)
</code></pre>
<p>sind die threadsafe?</p>
</blockquote>
<p>Ja, ist ein Wert der auf dem Stack (oder einem Register) abgelegt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1912209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1912209</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 14 Jun 2010 14:19:44 GMT</pubDate></item><item><title><![CDATA[Reply to QThread: Zugriff auf Array aus mehreren Threads on Mon, 14 Jun 2010 14:57:30 GMT]]></title><description><![CDATA[<p>ahh, ich lese in einem globalen const unsigned int...<br />
ist das &quot;verboten&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1912236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1912236</guid><dc:creator><![CDATA[sudo rm -rf]]></dc:creator><pubDate>Mon, 14 Jun 2010 14:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to QThread: Zugriff auf Array aus mehreren Threads on Mon, 14 Jun 2010 15:08:26 GMT]]></title><description><![CDATA[<p>sudo rm -rf schrieb:</p>
<blockquote>
<p>ahh, ich lese in einem globalen const unsigned int...<br />
ist das &quot;verboten&quot;?</p>
</blockquote>
<p>da es const ist (und du hoffentlich keine const-cast-und-doch-ändern-Schweinereien) damit machst, kanns da keine Probleme geben. Aber bevor du hier zu jeder zweiten Zeile deines Codes ne einzelne Frage stellst solltest du vielleicht dich ein wenig in das Thema Threadsafety einlesen und danach bei ggf. noch bleibenden Fragen nochmal nachhaken - am Besten natürlich mit aussagekräftigem Code <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/1912244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1912244</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 14 Jun 2010 15:08:26 GMT</pubDate></item><item><title><![CDATA[Reply to QThread: Zugriff auf Array aus mehreren Threads on Mon, 14 Jun 2010 15:55:56 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Aber bevor du hier zu jeder zweiten Zeile deines Codes ne einzelne Frage stellst solltest du vielleicht dich ein wenig in das Thema Threadsafety einlesen und danach bei ggf. noch bleibenden Fragen nochmal nachhaken - am Besten natürlich mit aussagekräftigem Code <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>
</blockquote>
<p>Sehr gerne, ich weiß nur nicht wo.<br />
Hab kein Buch dazu und die Doku von QT ist ja eigentlich ganz gut, nur zu threadsafety finde ich da nicht allzuviel...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1912264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1912264</guid><dc:creator><![CDATA[sudo rm -rf]]></dc:creator><pubDate>Mon, 14 Jun 2010 15:55:56 GMT</pubDate></item></channel></rss>