मैं एंड्रॉइड नेटिव डेवलपमेंट किट का उपयोग करके कुछ मल्टीथ्रेडिंग करने की कोशिश कर रहा हूं, इसलिए मुझे सी ++ पक्ष पर एक म्यूटेक्स चाहिए।एंड्रॉइड एनडीके म्यूटेक्स
Android NDK के साथ mutex बनाने और उपयोग करने का सही तरीका क्या है?
धन्यवाद
मैं एंड्रॉइड नेटिव डेवलपमेंट किट का उपयोग करके कुछ मल्टीथ्रेडिंग करने की कोशिश कर रहा हूं, इसलिए मुझे सी ++ पक्ष पर एक म्यूटेक्स चाहिए।एंड्रॉइड एनडीके म्यूटेक्स
Android NDK के साथ mutex बनाने और उपयोग करने का सही तरीका क्या है?
धन्यवाद
NDK pthread mutexes के लिए समर्थन करने के लिए प्रकट होता है। मैंने खुद का उपयोग नहीं किया है।
यहाँ है कि हम कैसे विंडोज और Android पर जाना (OS_LINUX परिभाषित Android के लिए है):
class clMutex
{
public:
clMutex()
{
#ifdef OS_LINUX
pthread_mutex_init(&TheMutex, NULL);
#endif
#ifdef OS_WINDOWS
InitializeCriticalSection(&TheCS);
#endif
}
/// Enter the critical section -- other threads are locked out
void Lock() const
{
#ifdef OS_LINUX
pthread_mutex_lock(&TheMutex);
#endif
#ifdef OS_WINDOWS
if (!TryEnterCriticalSection(&TheCS)) EnterCriticalSection(&TheCS);
#endif
}
/// Leave the critical section
void Unlock() const
{
#ifdef OS_LINUX
pthread_mutex_unlock(&TheMutex);
#endif
#ifdef OS_WINDOWS
LeaveCriticalSection(&TheCS);
#endif
}
~clMutex()
{
#ifdef OS_WINDOWS
DeleteCriticalSection(&TheCS);
#endif
#ifdef OS_LINUX
pthread_mutex_destroy(&TheMutex);
#endif
}
#ifdef OS_LINUX
// POSIX threads
mutable pthread_mutex_t TheMutex;
#endif
#ifdef OS_WINDOWS
mutable CRITICAL_SECTION TheCS;
#endif
};
Linderdaum Engine के डेवलपर्स मैं हमारी एसडीके में Mutex.h के लिए देखने की अनुशंसा के रूप में।
#include <pthread.h>
class CThreadLock
{
public:
CThreadLock();
virtual ~CThreadLock();
void Lock();
void Unlock();
private:
pthread_mutex_t mutexlock;
};
CThreadLock::CThreadLock()
{
// init lock here
pthread_mutex_init(&mutexlock, 0);
}
CThreadLock::~CThreadLock()
{
// deinit lock here
pthread_mutex_destroy(&mutexlock);
}
void CThreadLock::Lock()
{
// lock
pthread_mutex_lock(&mutexlock);
}
void CThreadLock::Unlock()
{
// unlock
pthread_mutex_unlock(&mutexlock);
}
यह सवाल एक साल पुराना है .. और पहले ही इसका उत्तर दिया जा चुका है। – bitwise
धन्यवाद। मैं पदों के एक समूह में आया था कि यह अभी तक लागू नहीं किया गया था, लेकिन वे बहुत दिनांकित होना चाहिए। मैंने पीडीड्रेड का उपयोग करके एनडीके के लिए एक छोटा मॉड्यूल लिखा था, और इसे संकलित किया, लेकिन मैंने इसे चलाने की कोशिश कभी नहीं की। मैं जावा पक्ष पर थ्रेडिंग करने में सक्षम था। वैसे भी धन्यवाद, मैं शायद कुछ बिंदु पर मॉड्यूल का उपयोग कर समाप्त हो जाएगा। – bitwise
वंशावली के लिए टिप्पणी: मेरे पास एक ऐसा अनुप्रयोग है जो पर्थ्रेड का उपयोग कर रहा है, साथ ही साथ पर्थ्रेड म्यूटेक्स का उपयोग कर रहा है, और यह ठीक काम कर रहा है, ऐसा लगता है जैसे वे कार्यान्वित किए गए हैं, और काम करते हैं। –