<?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[Warum keine threadsichere alternative zu localtime()?]]></title><description><![CDATA[<p>Wie viele sicherlich wissen, wandelt die funktion std::localtime ein std::time_t in ein std::tm welches man benötigt, um die aktuelle lokale Zeit und Datum auszugeben. Dabei liefert sie einen Pointer auf eine statische std::tm Instanz zurück. Zu C-Zeiten aus denen die Funktion stammt, war so etwas sicherlich eine praktikable Lösung da der Standard nichts von Threadsgwusste. Dies ist bei mehreren Threads in C++11 natürlich anders da jeder parallele Aufruf von std::localtime eine Race Condition erzeugen kann, da jeder das Ergebnis für alle anderen Aufrufer verändert.Nun könnte man sagen das ist ja auch eine C-Funktion die man mit C++ nicht mehr benutzen sollte, nur: Mit C++11 Chrono braucht man genau diese Funktion zu Datumsausgabe. Eine Andere Möglichkeit gibt es gar nicht. Warum zwingt einen c++11 zur Benutzung einer Funktion die man mit C++11 eigentlich gar nicht nutzen darf. Damit ist std::chrono meines Erachtens broken, auch wenn es es sich sicher nutzen lässt solange man kein konkretes Datum oder Uhrzeit benötigt. Warum gibt es da nichts zeitgemäßes zudem der Umweg über std::localtime ohnehin unintuitiv und umständlich ist und vom Interface überhaupt nicht zu std::chrono passt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327348/warum-keine-threadsichere-alternative-zu-localtime</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 10:45:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327348.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Aug 2014 08:27:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum keine threadsichere alternative zu localtime()? on Wed, 06 Aug 2014 08:27:17 GMT]]></title><description><![CDATA[<p>Wie viele sicherlich wissen, wandelt die funktion std::localtime ein std::time_t in ein std::tm welches man benötigt, um die aktuelle lokale Zeit und Datum auszugeben. Dabei liefert sie einen Pointer auf eine statische std::tm Instanz zurück. Zu C-Zeiten aus denen die Funktion stammt, war so etwas sicherlich eine praktikable Lösung da der Standard nichts von Threadsgwusste. Dies ist bei mehreren Threads in C++11 natürlich anders da jeder parallele Aufruf von std::localtime eine Race Condition erzeugen kann, da jeder das Ergebnis für alle anderen Aufrufer verändert.Nun könnte man sagen das ist ja auch eine C-Funktion die man mit C++ nicht mehr benutzen sollte, nur: Mit C++11 Chrono braucht man genau diese Funktion zu Datumsausgabe. Eine Andere Möglichkeit gibt es gar nicht. Warum zwingt einen c++11 zur Benutzung einer Funktion die man mit C++11 eigentlich gar nicht nutzen darf. Damit ist std::chrono meines Erachtens broken, auch wenn es es sich sicher nutzen lässt solange man kein konkretes Datum oder Uhrzeit benötigt. Warum gibt es da nichts zeitgemäßes zudem der Umweg über std::localtime ohnehin unintuitiv und umständlich ist und vom Interface überhaupt nicht zu std::chrono passt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412187</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Wed, 06 Aug 2014 08:27:17 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine threadsichere alternative zu localtime()? on Wed, 06 Aug 2014 09:33:14 GMT]]></title><description><![CDATA[<p>chrono ist nicht zum Zeitpunkt bestimmen designed worden, sondern fuer Zeitmessungen und Timer waehrend der Programmlaufzeit.</p>
<p>Schau dir mal boost/local_time an: <a href="http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/local_time.html" rel="nofollow">http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/local_time.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412203</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Wed, 06 Aug 2014 09:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine threadsichere alternative zu localtime()? on Wed, 06 Aug 2014 09:42:37 GMT]]></title><description><![CDATA[<p>Marthog schrieb:</p>
<blockquote>
<p>chrono ist nicht zum Zeitpunkt bestimmen designed worden, sondern fuer Zeitmessungen und Timer waehrend der Programmlaufzeit.</p>
</blockquote>
<p>Schon klar, aber wenn man eine Funktion system_clock::to_time_t anbietet würde ich auch erwarten, dass sich diese sinnvoll nutzen lässt. Auch ist so völlig unverständlich, warum die eigentlich recht nützliche Funktion std::put_time Einzug in C++11 gehalten hat. Das wäre ja alles super nützlich wenn es funktionieren würde, was noch schlechter ist als wenn es gar nicht vorhanden wäre.</p>
<p>Marthog schrieb:</p>
<blockquote>
<p>Schau dir mal boost/local_time an: <a href="http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/local_time.html" rel="nofollow">http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/local_time.html</a></p>
</blockquote>
<p>Kenne ich und ist recht nützlich. Nur blöd, wenn man kein boost nutzen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412205</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Wed, 06 Aug 2014 09:42:37 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine threadsichere alternative zu localtime()? on Wed, 06 Aug 2014 09:51:18 GMT]]></title><description><![CDATA[<p>Kann man dann nicht einfach ein thread-sicheres localtime selber schreiben? Ist doch nicht so kompliziert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412207</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 06 Aug 2014 09:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine threadsichere alternative zu localtime()? on Wed, 06 Aug 2014 09:59:46 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Kann man dann nicht einfach ein thread-sicheres localtime selber schreiben? Ist doch nicht so kompliziert?</p>
</blockquote>
<p>Keine Ahnung, ich wüsste zumindest nicht spontan, wie ich das machen sollte. Mir ging es aber auch weniger um konkrete Praxis als darum die Entscheidungen des c++ standard committee zu verstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412210</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Wed, 06 Aug 2014 09:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum keine threadsichere alternative zu localtime()? on Wed, 06 Aug 2014 10:01:18 GMT]]></title><description><![CDATA[<blockquote>
<p>die Entscheidungen des c++ standard committee zu verstehen</p>
</blockquote>
<p>ist reine Zeitverschwendung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412211</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 06 Aug 2014 10:01:18 GMT</pubDate></item></channel></rss>