<?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[max. Anz. v. WaitableTimern im System...]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Klasse geschrieben, die die Steuerung von externen Geräten über einen Com-Port umsetzt.<br />
Wenn keinen Benutzereingaben gemacht werden, dann muss die zugehörige Instanz ein Lebenszeichen senden. Mit einer Instanz funktioniert das Ganze wunderbar, doch sobald eine zweite Instanz erstellt wird, wird die erste &quot;rausgeschmissen&quot; und die andere läuft munter weiter. Für mich sieht das so aus, als würden sich die zuständigen Threads eine Ressource teilen. Das für jeden Thread ein eigener Timer erstellt wird, hab ich so umgesetzt:</p>
<pre><code class="language-cpp">static DWORD WINAPI MyClass::Thr_LifeSign (LPVOID ThrParam)
{
    ....
    HANDLE hTi_LifeSign = 0xcccccccc;

    stringstream ssH;
    unsigned short Count = 0;
    char *pcNameTi = &quot;Perf_LifeSign&quot;;
    string sName;
    while (hTi_LifeSign != NULL)
    {
        ssH.clear();
        ssH.str(&quot;&quot;);
        ssH &lt;&lt; pcNameTi &lt;&lt; Count;
        sName = ssH.str();

        hTi_LifeSign = OpenWaitableTimer (0, false, sName.c_str());
        //öffnen, wenn nicht vorhanden hTi_LifeSign = NULL
    }

    hTi_LifeSign = CreateWaitableTimer (NULL, false, sName.c_str());
    ...
}
</code></pre>
<p>Gibt es da sonst elegantere Lösungen, oder könnt ihr vielleicht Fehler entdecken? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145010/max-anz-v-waitabletimern-im-system</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 05:24:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145010.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Apr 2006 08:26:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to max. Anz. v. WaitableTimern im System... on Mon, 24 Apr 2006 08:27:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Klasse geschrieben, die die Steuerung von externen Geräten über einen Com-Port umsetzt.<br />
Wenn keinen Benutzereingaben gemacht werden, dann muss die zugehörige Instanz ein Lebenszeichen senden. Mit einer Instanz funktioniert das Ganze wunderbar, doch sobald eine zweite Instanz erstellt wird, wird die erste &quot;rausgeschmissen&quot; und die andere läuft munter weiter. Für mich sieht das so aus, als würden sich die zuständigen Threads eine Ressource teilen. Das für jeden Thread ein eigener Timer erstellt wird, hab ich so umgesetzt:</p>
<pre><code class="language-cpp">static DWORD WINAPI MyClass::Thr_LifeSign (LPVOID ThrParam)
{
    ....
    HANDLE hTi_LifeSign = 0xcccccccc;

    stringstream ssH;
    unsigned short Count = 0;
    char *pcNameTi = &quot;Perf_LifeSign&quot;;
    string sName;
    while (hTi_LifeSign != NULL)
    {
        ssH.clear();
        ssH.str(&quot;&quot;);
        ssH &lt;&lt; pcNameTi &lt;&lt; Count;
        sName = ssH.str();

        hTi_LifeSign = OpenWaitableTimer (0, false, sName.c_str());
        //öffnen, wenn nicht vorhanden hTi_LifeSign = NULL
    }

    hTi_LifeSign = CreateWaitableTimer (NULL, false, sName.c_str());
    ...
}
</code></pre>
<p>Gibt es da sonst elegantere Lösungen, oder könnt ihr vielleicht Fehler entdecken? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043768</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Mon, 24 Apr 2006 08:27:11 GMT</pubDate></item><item><title><![CDATA[Reply to max. Anz. v. WaitableTimern im System... on Mon, 24 Apr 2006 08:30:36 GMT]]></title><description><![CDATA[<p>Wieso sollte hier für jede Instanz einen eigenen Timer verwendet werden !? Du übergibst doch immer den gleichen Name?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043769</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 24 Apr 2006 08:30:36 GMT</pubDate></item><item><title><![CDATA[Reply to max. Anz. v. WaitableTimern im System... on Tue, 25 Apr 2006 07:11:28 GMT]]></title><description><![CDATA[<p>Ach ich hab das <strong>++Count</strong> am Ende der Schleife vergessen. Sorry ich hab das gestern in aller Eile geschrieben. Es muss natürlich so aussehen.</p>
<pre><code class="language-cpp">static DWORD WINAPI MyClass::Thr_LifeSign (LPVOID ThrParam)
{
    ....
    HANDLE hTi_LifeSign = 0xcccccccc;

    stringstream ssH;
    unsigned short Count = 0;
    char *pcNameTi = &quot;Perf_LifeSign&quot;;
    string sName;
    while (hTi_LifeSign != NULL)
    {
        ssH.clear();
        ssH.str(&quot;&quot;);
        ssH &lt;&lt; pcNameTi &lt;&lt; Count;
        sName = ssH.str();

        hTi_LifeSign = OpenWaitableTimer (0, false, sName.c_str());
        //öffnen, wenn nicht vorhanden hTi_LifeSign = NULL
        ++Count;
    }

    hTi_LifeSign = CreateWaitableTimer (NULL, false, sName.c_str());
    ...
}
</code></pre>
<p>Das Problem besteht trotzdem, weil ich's gestern nur vergessen hatte. Bei mir im Code steht's natürlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044592</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Tue, 25 Apr 2006 07:11:28 GMT</pubDate></item><item><title><![CDATA[Reply to max. Anz. v. WaitableTimern im System... on Tue, 25 Apr 2006 07:21:46 GMT]]></title><description><![CDATA[<p>Auch mit diesem Code stellst Du sicher, dass Du genau einen Waitable-Timer für alle Threads hast!<br />
Du solltest eine Funktion machen, welche Dir einen eindeutigen Namen zurückliefert und diese auch Multi-Threading-Sicher ist. Oder am besten &quot;CoCreateGuid&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044597</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 25 Apr 2006 07:21:46 GMT</pubDate></item><item><title><![CDATA[Reply to max. Anz. v. WaitableTimern im System... on Thu, 27 Apr 2006 08:29:39 GMT]]></title><description><![CDATA[<p>Also ich habs jetzt noch gemacht, dass die Instanz einen Namen bekommt, der vorher schon geprüft wird, ob er vorhanden ist oder nicht. Und der Name wird dann auch für den Timer verwendet, was dann auch wunderbar funktioniert.<br />
Allerdings ist mir jetzt immer noch nicht klar, warum mein geposteter Code nicht funktioniert hat. Nach meinem Verständnis hätte er doch eigentlich</p>
<p>sName = &quot;Perf_LifeSign0&quot;<br />
sName = &quot;Perf_LifeSign1&quot;<br />
sName = &quot;Perf_LifeSign2&quot;<br />
...</p>
<p>liefern müssen. Je nach dem wie viele Timer schon erstellt wurden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Gibt es nun eigentlich eine Beschränkung von Timern im System?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046176</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Thu, 27 Apr 2006 08:29:39 GMT</pubDate></item><item><title><![CDATA[Reply to max. Anz. v. WaitableTimern im System... on Thu, 27 Apr 2006 10:27:47 GMT]]></title><description><![CDATA[<p>Eigentlich irrelevant, denn so bald du sie erreichen solltest, hast du ein Designproblem und du solltest dein Programm überarbeiten. <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046225</guid><dc:creator><![CDATA[Gast Luckie]]></dc:creator><pubDate>Thu, 27 Apr 2006 10:27:47 GMT</pubDate></item></channel></rss>