<?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[&amp;quot;timedwait&amp;quot; mit absolutem Timeout - schonmal verwendet? Sinnvoll?]]></title><description><![CDATA[<p>Hat jmd. von euch schonmal eine &quot;timed_wait&quot; Funktion mit einem absoluten Timeout verwendet, wo ihr auch ein absolutes Timeout wolltet und nicht ein relatives simuliert habt? Also sowas wie</p>
<pre><code>pthread_cond_timedwait
pthread_rwlock_timedrdlock
sem_timedwait
mq_timedreceive
</code></pre>
<p>?<br />
Bzw. anders rum, habt ihr schonmal (z.B. unter Windows) geflucht weil es keine absoluten Timeouts gibt, und ihr drumrum stricken musstet?</p>
<p>Wenn ja bitte mit Beispiel, also wozu und warum das absolute Timeout verwendet wurde. Es geht einfach darum dass ich an einer Library arbeite, und dort Timeouts brauche. Und ich sehe keinen vernünftigen Grund absolute Timeouts zu implementieren ... deswegen frage ich ob ihr vielleicht einen seht. Sozusagen.</p>
<p>Die Sache mit dem Neuberechnen von relativen Timeouts (in Funktionen die z.B. Schleifen benötigen) ist - innerhalb und ausserhalb der Library - kein Problem, also bitte keine Beispiele ala &quot;absolutes Timeout ist gut weil man das nicht neu berechnen muss&quot; <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>
<p>EDIT: freue mich auch allgemein über Kommentare zu dem Thema.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192134/quot-timedwait-quot-mit-absolutem-timeout-schonmal-verwendet-sinnvoll</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 00:31:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192134.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Sep 2007 23:33:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;quot;timedwait&amp;quot; mit absolutem Timeout - schonmal verwendet? Sinnvoll? on Wed, 12 Sep 2007 12:41:30 GMT]]></title><description><![CDATA[<p>Hat jmd. von euch schonmal eine &quot;timed_wait&quot; Funktion mit einem absoluten Timeout verwendet, wo ihr auch ein absolutes Timeout wolltet und nicht ein relatives simuliert habt? Also sowas wie</p>
<pre><code>pthread_cond_timedwait
pthread_rwlock_timedrdlock
sem_timedwait
mq_timedreceive
</code></pre>
<p>?<br />
Bzw. anders rum, habt ihr schonmal (z.B. unter Windows) geflucht weil es keine absoluten Timeouts gibt, und ihr drumrum stricken musstet?</p>
<p>Wenn ja bitte mit Beispiel, also wozu und warum das absolute Timeout verwendet wurde. Es geht einfach darum dass ich an einer Library arbeite, und dort Timeouts brauche. Und ich sehe keinen vernünftigen Grund absolute Timeouts zu implementieren ... deswegen frage ich ob ihr vielleicht einen seht. Sozusagen.</p>
<p>Die Sache mit dem Neuberechnen von relativen Timeouts (in Funktionen die z.B. Schleifen benötigen) ist - innerhalb und ausserhalb der Library - kein Problem, also bitte keine Beispiele ala &quot;absolutes Timeout ist gut weil man das nicht neu berechnen muss&quot; <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>
<p>EDIT: freue mich auch allgemein über Kommentare zu dem Thema.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1362919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1362919</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 12 Sep 2007 12:41:30 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;timedwait&amp;quot; mit absolutem Timeout - schonmal verwendet? Sinnvoll? on Thu, 13 Sep 2007 18:30:28 GMT]]></title><description><![CDATA[<p>Hm. Keiner was zu sagen zu dem Thema?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364848</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 13 Sep 2007 18:30:28 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;timedwait&amp;quot; mit absolutem Timeout - schonmal verwendet? Sinnvoll? on Thu, 13 Sep 2007 20:01:57 GMT]]></title><description><![CDATA[<p>Is halt so <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>
<p>Wäre aber cool wenns das auch mit dem monotonischen Zeitgeber gäbe. (POSIX Realtime Extensions, Linux hats, OS X nicht, Windows <strong>hat</strong> etwas ähnliches)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364895</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Thu, 13 Sep 2007 20:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;timedwait&amp;quot; mit absolutem Timeout - schonmal verwendet? Sinnvoll? on Thu, 13 Sep 2007 21:53:28 GMT]]></title><description><![CDATA[<p>Was &quot;is halt so&quot;? (Verstehe nicht was du meinst - was ist wie? <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>
<p>Mein Design sieht derzeit folgende Klasse für Timeouts vor:</p>
<pre><code class="language-cpp">namespace xyz
{

typedef uint64_t timeout_t;

#define XYZ_NO_THROW throw()

class XYZ_EXPORT abstract_timeout_clock
{
public:
	static timeout_t const max_wait_duration = timeout_t(1) &lt;&lt; 30;

	virtual timeout_t get_remaining_msec() const = 0;
	virtual timeout_t get_wait_duration_msec(timeout_t limit = max_wait_duration) const = 0;
};

//---------------------------------------------------------------------
// a monotonic microsecond clock, used for relative timeouts

class XYZ_EXPORT timeout_clock : public abstract_timeout_clock // final
{
public:
	explicit timeout_clock(timeout_t msec) XYZ_NO_THROW;

	void update() const XYZ_NO_THROW;
	void reset(timeout_t msec) XYZ_NO_THROW;

	virtual timeout_t get_remaining_msec() const XYZ_NO_THROW;
	virtual timeout_t get_wait_duration_msec(timeout_t limit = max_wait_duration) const XYZ_NO_THROW;

	void wait() const XYZ_NO_THROW;

private:
	// ...
};

//---------------------------------------------------------------------
// an &quot;infinite timeout&quot; clock

class XYZ_EXPORT infinite_timeout : public abstract_timeout_clock // final
{
    // ...
};

} // namespace xyz
</code></pre>
<p>Diverse Funktionen, wie z.B. scoped_lock::timed_lock oder mutex::timed_lock nehmen als Parameter dann ein &quot;abstract_timeout_clock const&amp;&quot;.</p>
<p>Die Verwendung sieht für den Client dann ca. so aus:</p>
<pre><code class="language-cpp">void foo::bar()
{
    xyz::scoped_lock&lt;xyz::mutex&gt; lock(m_mutex, false); // don't lock now
    if (lock.timed_lock(xyz::timeout_clock(1000)))
    {
        // ...
    }
}
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">void foo::bar()
{
    xyz::scoped_lock&lt;xyz::mutex&gt; lock(m_mutex, xyz::timeout_clock(1000)); 
    if (lock.is_locked())
    {
        // ...
    }
}
</code></pre>
<p>----</p>
<p>Unter Windows verwende ich für die timeout_clock ::GetTickCount(), unter *NIX werde ich wohl clock_gettime(CLOCK_MONOTONIC, &amp;timespec_) verwenden. Auf jeden Fall einen &quot;monotonischen Zeitgeber&quot; wie du das nennst.</p>
<p>Die Frage ist nur ob es notwändig ist/sinnvoll wäre zusätzlich absolute Timeouts zu unterstützen (die dann auf der nicht-sehr-monotonischen System-Time basieren). Ich sehe dafür wie gesagt keine Verwendung. Also ich wüsste nicht warum ich jemals ein timed_lock/timed_wait/timed_xxx irgendwo brauchen würde mit einem absoluten &quot;Timeout Datum&quot;.</p>
<p>Und &quot;einfach beides unterstützen&quot; ist auch leider nicht einfach genug als dass ich mir die Arbeit antun würde wenns nicht wirklich Sinn macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364936</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 13 Sep 2007 21:53:28 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;timedwait&amp;quot; mit absolutem Timeout - schonmal verwendet? Sinnvoll? on Thu, 13 Sep 2007 22:05:04 GMT]]></title><description><![CDATA[<p>Wenn man einen Geburtstagserinnerungstimer will, sind absolute Timeouts vielleicht sogar sinnvoll. <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>
<p>clock_gettime(CLOCK_MONOTONIC, &amp;timespec_) ist toll, funktioniert aber unter OS X nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364939</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Thu, 13 Sep 2007 22:05:04 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;timedwait&amp;quot; mit absolutem Timeout - schonmal verwendet? Sinnvoll? on Thu, 13 Sep 2007 23:18:40 GMT]]></title><description><![CDATA[<p>Wen interessiert schon OS X <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="😃"
    /><br />
Naja, ok, auch doof.<br />
OS X ist doch ein BSD Derivat, nicht? Da wird sich doch hoffentlich irgendeine andere Möglichkeit finden lassen.<br />
Aber soweit bin ich noch nicht - ich mach erstmal das Design + die Implementierung für Windows (damit kenne ich mich am besten aus, also mit Windows).</p>
<p>Im nächsten Schritt kommt dann Linux, und später wahrscheinlich BSD &amp; Solaris -- ggf. noch andere, mal sehen.</p>
<p>BTW: wenn du ne gute Seite weisst mit ner API Reference für OS X wäre ich auch dankbar <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>
<p>p.S.: gibt's die Funktion in OS X: <a href="http://felinemenace.org/~nemo/mach/manpages/clock_get_time.html" rel="nofollow">http://felinemenace.org/~nemo/mach/manpages/clock_get_time.html</a> ?<br />
Die müsste reichen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364944</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 13 Sep 2007 23:18:40 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;timedwait&amp;quot; mit absolutem Timeout - schonmal verwendet? Sinnvoll? on Fri, 14 Sep 2007 08:16:18 GMT]]></title><description><![CDATA[<p>Jo, OS X ist ein BSD-Derivat, irgendwie. Sorry, kenne clock_get_time nicht und habe auch keine gute API-Referenz parat.</p>
<p>Linux ist eh viel wichtiger. <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/1365050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365050</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Fri, 14 Sep 2007 08:16:18 GMT</pubDate></item></channel></rss>