<?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[Problem mit boost::interprocess::file_lock unter Linux]]></title><description><![CDATA[<p>Folgender Code</p>
<pre><code class="language-cpp">#include &lt;boost/interprocess/sync/file_lock.hpp&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;

int main() {
	std::ofstream file(&quot;test.lock&quot;);
	boost::interprocess::file_lock flock(&quot;test.lock&quot;);
	std::cout &lt;&lt; flock.try_lock();
	std::cout &lt;&lt; flock.try_lock() &lt;&lt; std::endl;
}
</code></pre>
<p>liefert bei mir unter Windows</p>
<pre><code>10
</code></pre>
<p>unter Linux allerdings</p>
<pre><code>11
</code></pre>
<p>. Das heißt es wirkt immer so, als wäre die Datei nicht gelockt, sollte sie aber nach einem Aufruf von try_lock, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/334185/problem-mit-boost-interprocess-file_lock-unter-linux</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 20:51:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/334185.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Aug 2015 09:38:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit boost::interprocess::file_lock unter Linux on Thu, 27 Aug 2015 09:38:56 GMT]]></title><description><![CDATA[<p>Folgender Code</p>
<pre><code class="language-cpp">#include &lt;boost/interprocess/sync/file_lock.hpp&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;

int main() {
	std::ofstream file(&quot;test.lock&quot;);
	boost::interprocess::file_lock flock(&quot;test.lock&quot;);
	std::cout &lt;&lt; flock.try_lock();
	std::cout &lt;&lt; flock.try_lock() &lt;&lt; std::endl;
}
</code></pre>
<p>liefert bei mir unter Windows</p>
<pre><code>10
</code></pre>
<p>unter Linux allerdings</p>
<pre><code>11
</code></pre>
<p>. Das heißt es wirkt immer so, als wäre die Datei nicht gelockt, sollte sie aber nach einem Aufruf von try_lock, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2465771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2465771</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Thu, 27 Aug 2015 09:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit boost::interprocess::file_lock unter Linux on Thu, 27 Aug 2015 10:18:05 GMT]]></title><description><![CDATA[<blockquote>
<p>//!Effects: The calling thread tries to acquire exclusive ownership of the mutex<br />
//! without waiting. <strong>If no other thread has</strong> exclusive, or sharable<br />
//! ownership of the mutex this succeeds.<br />
//!Returns: If it can acquire exclusive ownership immediately returns true.<br />
//! If it has to wait, returns false.<br />
//!Throws: interprocess_exception on error</p>
</blockquote>
<p>probiers mal von einem andere thread, ist es dann wie erwartet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2465776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2465776</guid><dc:creator><![CDATA[kurze_frage]]></dc:creator><pubDate>Thu, 27 Aug 2015 10:18:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit boost::interprocess::file_lock unter Linux on Thu, 27 Aug 2015 10:34:35 GMT]]></title><description><![CDATA[<p>Leider auch mit</p>
<pre><code class="language-cpp">#include &lt;boost/interprocess/sync/file_lock.hpp&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;thread&gt;

int main() {
	std::ofstream file(&quot;test.lock&quot;);
	auto f = []() {
		boost::interprocess::file_lock flock(&quot;test.lock&quot;);
		std::cout &lt;&lt; flock.try_lock() &lt;&lt; std::endl;
	};
	std::thread t1(f);
	std::thread t2(f);
	t1.join();
	t2.join();
}
</code></pre>
<p>dasselbe Ergebnis (unter Windows 10, unter Linux 11).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2465779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2465779</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Thu, 27 Aug 2015 10:34:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit boost::interprocess::file_lock unter Linux on Thu, 27 Aug 2015 11:22:18 GMT]]></title><description><![CDATA[<p>Bau nach dem lock halt mal ein sleep ein, wenn du pech hast ist der erste Thread schon durch und hat den lock wieder freigegeben bevor der zweite lockt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2465785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2465785</guid><dc:creator><![CDATA[tkausl]]></dc:creator><pubDate>Thu, 27 Aug 2015 11:22:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit boost::interprocess::file_lock unter Linux on Thu, 27 Aug 2015 11:27:04 GMT]]></title><description><![CDATA[<p>Auch folgendes gerade probiert:</p>
<pre><code class="language-cpp">#include &lt;boost/interprocess/sync/file_lock.hpp&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;thread&gt;

int main() {
    std::ofstream file(&quot;test.lock&quot;);
    auto f = []() {
        boost::interprocess::file_lock flock(&quot;test.lock&quot;);
        std::cout &lt;&lt; flock.try_lock() &lt;&lt; std::endl;
        std::this_thread::sleep_for(std::chrono::milliseconds(1000));
    };
    std::thread t1(f);
    std::this_thread::sleep_for(std::chrono::milliseconds(500));
    std::thread t2(f);
    t1.join();
    t2.join();
}
</code></pre>
<p>Selbes Ergebnis ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2465787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2465787</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Thu, 27 Aug 2015 11:27:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit boost::interprocess::file_lock unter Linux on Thu, 27 Aug 2015 11:34:27 GMT]]></title><description><![CDATA[<p>file_lock ist nicht threadsicher.</p>
<p>&lt;a href= schrieb:</p>
<blockquote>
<p>file_lock&quot;&gt;A file lock can't guarantee synchronization between threads of the same process so just use file locks to synchronize threads from different processes.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2465788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2465788</guid><dc:creator><![CDATA[locklockwhosthere]]></dc:creator><pubDate>Thu, 27 Aug 2015 11:34:27 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit boost::interprocess::file_lock unter Linux on Thu, 27 Aug 2015 12:00:22 GMT]]></title><description><![CDATA[<p>Ahh, danke. Das heißt bisher war es einfach nur Glück, dass es unter Windows funktioniert?</p>
<p>Ich sollte dann</p>
<pre><code class="language-cpp">std::mutex
</code></pre>
<p>als Ersatz verwenden, richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2465790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2465790</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Thu, 27 Aug 2015 12:00:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit boost::interprocess::file_lock unter Linux on Thu, 27 Aug 2015 12:27:52 GMT]]></title><description><![CDATA[<p>Mit 2 Threads muss die Ausgabe 11 sein, und das ist es bei mir unter Linux auch.</p>
<pre><code class="language-cpp">int main() {
  std::ofstream file(&quot;test.lock&quot;);
  std::mutex m;
  auto f = [&amp;m]() {
    std::lock_guard&lt;std::mutex&gt; g(m);
    boost::interprocess::file_lock flock(&quot;test.lock&quot;);
    std::cout &lt;&lt; flock.try_lock() &lt;&lt; std::endl;
    // der Destruktor gibt den lock wieder frei.
  };
  std::thread t1(f);
  std::thread t2(f);
  t1.join();
  t2.join();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2465792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2465792</guid><dc:creator><![CDATA[locklockwhosthere]]></dc:creator><pubDate>Thu, 27 Aug 2015 12:27:52 GMT</pubDate></item></channel></rss>