के बाद अधिग्रहित किया गया है, मैं का उपयोग कर named_mutex
और timeout
का उपयोग कर रहा हूं; मैं लिनक्स ओएस में चल रहा हूँ।बूस्ट इंटरप्रोसेस नामक म्यूटेक्स अवशेष
मेरी परीक्षणों में से एक के दौरान मैं एक दुर्घटना थी: तब से, हर मैं फिर से आवेदन चलाने का प्रयास है, यह बिंदु है जहां मैं ताला बनाया पर अटक जाती है; ऐसा लगता है कि म्यूटेक्स कुछ तरीके से अधिग्रहित रहा (इसका उपयोग कर कोई संभावित प्रक्रिया नहीं चल रही है)।
यदि आप नीचे दिए गए कोड को देखते हैं तो मुझे उम्मीद है कि 150 माइक्रोसॉन्ड के बाद, समय scoped_lock
मुझे एक त्रुटि देने के लिए लौटाता है .. लेकिन यह मामला नहीं है..यह सिर्फ लटकता है।
- कैसे सुनिश्चित करें कि
boost::interprocess
नामित म्युटेक्स नष्ट हो जाता है बनाने के लिए:#include <boost/interprocess/sync/named_mutex.hpp> namespace bi = boost::interprocess; bi::named_mutex m_mutex; try{ boost::posix_time::ptime pt( boost::posix_time::microsec_clock::local_time()) ; pt+= boost::posix_time::microseconds(150); bi::scoped_lock<bi::named_mutex> lock(m_mutex, pt); if(!lock.owns()){ FATAL("I didn't acquire the lock."); return EXIT_FAILURE; } ....
मेरे सवालों का अनुसरण कर रहे हैं? (तो कैसे प्रक्रियाओं भर में साझा म्युटेक्स को देखने के लिए और कैसे उन्हें नष्ट करने)
- क्यों म्युटेक्स 150 माइक्रोसेकंड के बाद वापस नहीं करता है को प्राप्त करने? क्या नीचे दिए गए कोड में कुछ गड़बड़ है?
धन्यवाद एक बहुत
AFG
मेरे मामले में यह विंडोज़ पर भी अधिग्रहित रहा –