<?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[Thread aus Thread starten--&amp;gt;Execute des gestarteten Thread wird nicht ausgeführt]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe gerade vor dem Problem, dass ein zu startender Thread Execute() nicht ausführt.</p>
<p>Der Code gleicht strukturell dem Folgenden:</p>
<p>Klasse <strong>A</strong>:</p>
<pre><code class="language-cpp">B *t[MAX];
...
A::Foo(...)
{
        ...
        t[1]= new B(...);
        ...
}
</code></pre>
<p>In Klasse <strong>B</strong>:</p>
<pre><code class="language-cpp">MyThread *thread1;
...
B::B(...)
{
        ...
        thread1= new MyThread(false, ...);
        ...
}
</code></pre>
<p>In Klasse <strong>OtherThread</strong>:</p>
<pre><code class="language-cpp">void __fastcall OtherThread::Execute()
{
        A a;
        (A::*callFoo)(...)= &amp;a.Foo;
        ...
        (a.*callFoo)(...);
        ...
        Terminate();
}
</code></pre>
<p>Zur Vervollständigung noch Klasse <strong>MyThread</strong>:</p>
<pre><code class="language-cpp">// Ctor
MyThread::MyThread(CreateSuspended,...):public TThread(CreateSuspended)
{
...
}

void __fastcall MyThread::Execute()
{
...
}
</code></pre>
<p>Das &quot;Eigenartige&quot;(für mich) ist, dass <em>MyThread</em> einwandfrei funktioniert, wenn ich nicht den Umweg über einen Aufruf in <em>OtherThread</em> gehe, sondern bspw. <em>A::Foo(...)</em> direkt aufrufe.</p>
<p>Konstruktor von <em>MyThread</em> wird aber in jedem Fall regulär aufgerufen(<em>CreateSuspended</em> ist <strong>false</strong>).</p>
<p>Kann mir jemand einen hilfreichen Tipp geben???</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/84557/thread-aus-thread-starten-gt-execute-des-gestarteten-thread-wird-nicht-ausgeführt</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 20:20:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/84557.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 31 Aug 2004 13:10:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Thread aus Thread starten--&amp;gt;Execute des gestarteten Thread wird nicht ausgeführt on Tue, 31 Aug 2004 13:10:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe gerade vor dem Problem, dass ein zu startender Thread Execute() nicht ausführt.</p>
<p>Der Code gleicht strukturell dem Folgenden:</p>
<p>Klasse <strong>A</strong>:</p>
<pre><code class="language-cpp">B *t[MAX];
...
A::Foo(...)
{
        ...
        t[1]= new B(...);
        ...
}
</code></pre>
<p>In Klasse <strong>B</strong>:</p>
<pre><code class="language-cpp">MyThread *thread1;
...
B::B(...)
{
        ...
        thread1= new MyThread(false, ...);
        ...
}
</code></pre>
<p>In Klasse <strong>OtherThread</strong>:</p>
<pre><code class="language-cpp">void __fastcall OtherThread::Execute()
{
        A a;
        (A::*callFoo)(...)= &amp;a.Foo;
        ...
        (a.*callFoo)(...);
        ...
        Terminate();
}
</code></pre>
<p>Zur Vervollständigung noch Klasse <strong>MyThread</strong>:</p>
<pre><code class="language-cpp">// Ctor
MyThread::MyThread(CreateSuspended,...):public TThread(CreateSuspended)
{
...
}

void __fastcall MyThread::Execute()
{
...
}
</code></pre>
<p>Das &quot;Eigenartige&quot;(für mich) ist, dass <em>MyThread</em> einwandfrei funktioniert, wenn ich nicht den Umweg über einen Aufruf in <em>OtherThread</em> gehe, sondern bspw. <em>A::Foo(...)</em> direkt aufrufe.</p>
<p>Konstruktor von <em>MyThread</em> wird aber in jedem Fall regulär aufgerufen(<em>CreateSuspended</em> ist <strong>false</strong>).</p>
<p>Kann mir jemand einen hilfreichen Tipp geben???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/596094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/596094</guid><dc:creator><![CDATA[PosSeX]]></dc:creator><pubDate>Tue, 31 Aug 2004 13:10:33 GMT</pubDate></item><item><title><![CDATA[Reply to Thread aus Thread starten--&amp;gt;Execute des gestarteten Thread wird nicht ausgeführt on Mon, 15 Nov 2004 10:41:54 GMT]]></title><description><![CDATA[<p>Hi PosSex,</p>
<p>wenn du einen Thread aus einem anderem Thread starten möchtest, dann solltest du die ganze Sache über Synchronize machen.</p>
<pre><code class="language-cpp">void __fastcall MacroThread::Execute()
{
//---- Hier den Thread-Code plazieren----

  for(...)
  {
    if(...)
    {
      nextIndex=...;
      Synchronize(newThread);
    }
  }
  Timer(5000);
}

void __fastcall MacroThread::newThread()
{
  Thread[Thread.size()] =new MacroThread(nextIndex);
}
</code></pre>
<p>Gruss, Sven</p>
]]></description><link>https://www.c-plusplus.net/forum/post/652089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/652089</guid><dc:creator><![CDATA[Sven_S]]></dc:creator><pubDate>Mon, 15 Nov 2004 10:41:54 GMT</pubDate></item></channel></rss>