2012-11-08 15 views
5

आईओएस पर एसक्लाइट के लिए एकाधिक पाठकों का उपयोग करते समय मुझे exc_bad_access मिल रहा है। WAL डेटाबेस और sqlite3_threadsafety रिटर्न 2 पर सक्षम है, इसलिए यह कोई समस्या नहीं होनी चाहिए।sqlite3_prepare_v2 exc_bad_access

मैं जिस कोड का उपयोग कर रहा हूं वह ज्यादातर समय 100k + उपयोगकर्ताओं के लिए ठीक काम करता है, लेकिन कुछ मल्टीथ्रेडिंग रेस स्थितियां हैं जो sqlite3_prepare_v2 को exc_bad_access के कारण बनाती हैं। असल में जब मैं पढ़ने के एक समूह को पढ़ने के लिए दो धागे पैदा करता है तो यह दुर्घटनाग्रस्त हो जाता है।

डब्ल्यूएएल और थ्रेडसेफ स्क्लाइट के साथ, एकाधिक धागे एक समस्या नहीं होनी चाहिए लेकिन यह पता नहीं लगा सकता कि यह exc_bad_access क्या कारण है।

अग्रिम धन्यवाद।

+0

यह आपकी मदद कर सकता है: http://stackoverflow.com/questions/2323684/sqlite-concurrency-issues – Raviprakash

उत्तर

5

इस संदर्भ में SQLite3 सुरक्षित refer SQLite document

तक थ्रेड नहीं है "threadsafe" से हमारा तात्पर्य है कि आप एक ही समय में अलग अलग धागे में विभिन्न SQLite डेटाबेस कनेक्शन का उपयोग कर सकते हैं। एकाधिक धागे में एक ही डेटाबेस कनेक्शन का उपयोग करने के लिए यह कभी सुरक्षित नहीं रहा है। यदि आप तैयार कथन बनाने के लिए sqlite3_prepare() API का उपयोग करते हैं, तो प्रत्येक तैयार कथन को डेटाबेस कनेक्शन का एक हिस्सा माना जाता है, जिससे इसे व्युत्पन्न किया गया था। तो आप एक ही समय में अलग-अलग धागे में एक ही डेटाबेस कनेक्शन से उत्पन्न दो तैयार कथन नहीं चला सकते हैं।

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