2011-03-14 7 views
8

में कोई गैर-फ़ाइल-आधारित नाम म्यूटक्स है? मेरी समस्या यह है कि प्रक्रिया क्रैश होने पर फ़ाइल को हटाया नहीं जाएगा। फ़ाइल रीबूट भी जीवित रहेगी।क्या कोई गैर-फ़ाइल-आधारित नामित म्यूटेक्स

संबंध है, टोबियास

+0

आप प्रक्रियाओं के बीच म्युटेक्स साझा करने के लिए की जरूरत है boost::interprocess::ipcdetail::winapi_mutex_wrapper उपयोग करना संभव है? (मुझे लगता है कि अगर आप * नाम * म्यूटेक्स के बारे में पूछ रहे हैं तो आप ऐसा करते हैं, लेकिन बेहतर स्पष्ट हो)। और क्या आप विंडोज या यूनिक्स का उपयोग कर रहे हैं (जो बनाया गया है उसके साथ व्यवहार अलग हो सकता है)? –

+1

हाँ, मुझे प्रक्रियाओं के बीच साझा करने की आवश्यकता है। प्राथमिक उपयोग Win32 पर है, लेकिन एक पोर्टेबल समाधान बेहतर होगा, इसलिए बूस्ट समाधान के लिए सवाल। –

उत्तर

1

Boost.Interprocess निम्नलिखित म्युटेक्स प्रदान करता है:

#include <boost/interprocess/sync/interprocess_mutex.hpp> 

interprocess_mutex: एक गैर पुनरावर्ती, अनाम म्युटेक्स कि साझा स्मृति में रखा जा सकता है या मेमोरी मैप की गई फाइलें।

#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp> 

interprocess_recursive_mutex: एक पुनरावर्ती, अनाम म्युटेक्स कि साझा स्मृति या स्मृति में रखा जा सकता मैप की फ़ाइलें।

#include <boost/interprocess/sync/named_mutex.hpp> 

named_mutex: एक गैर पुनरावर्ती, नामित म्युटेक्स।

#include <boost/interprocess/sync/named_recursive_mutex.hpp> 

named_recursive_mutex: एक पुनरावर्ती, नामित म्युटेक्स।

मैं नामित म्यूटेक्स का उपयोग करने का सुझाव देता हूं। देखें docs

+1

नाम_म्यूटेक्स (कम से कम डिफ़ॉल्ट सेटिंग्स में) एक फ़ाइल बनाता है। यह वही नहीं है जो मैं चाहता हूं, इसलिए मेरा प्रश्न। –

+0

हाँ, मेरा बुरा। मैं 1.46 शाखा में कार्यान्वयन की जांच करता हूं ( पर एक नज़र डालें) - यह साझा स्मृति में फ़ाइल बनाता है। – maverik

+0

हो सकता है 'boost :: thread :: mutex' नौकरी करें। मैंने इसका उपयोग नहीं किया है हालांकि – maverik

3

खिड़कियों के लिए यह बाद से यह आधारित फ़ाइल नहीं है

+0

मैंने टिकट साइन बनाया है यह एक अनौपचारिक लगता है। Https://svn.boost.org/trac/boost/ticket/12370 देखें – gast128

संबंधित मुद्दे