Mutex Android NDK

Estoy tratando de hacer un multithreading usando el Native Development Kit de Android, así que necesito un mutex en el lado de c ++.

¿Cuál es la forma correcta de crear y usar un mutex con Android NDK?

Gracias

El NDK parece tener soporte para mutex pthread . Yo no he hecho uso de ellos yo mismo.

Aquí es cómo vamos en Windows y Android (OS_LINUX define es para 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 }; 

Como uno de los desarrolladores de Linderdaum Engine te recomiendo revisar Mutex.h en nuestro SDK.

 #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); } 
  • Tutoriales o introducciones para escribir un lenguaje de scripting simple?
  • Problema de integración a la biblioteca tess-two (Tesseract Tools para Android) en un estudio de Android y construir ndk
  • Cómo devolver array int de Java a JNI
  • Enviar cadena C ++ a Java a través de JNI
  • Cómo entender esto definir macro?
  • Código Nativo de Android C ++
  • WebRTC AEC en Android
  • Ndk-gdb no puede encontrar gdb.setup
  • Error: no se puede encontrar la variable de símbolo GL_TEXTURE_EXTERNAL_OES + OpenCV en Android Studio
  • ¿Cómo puedo reducir el tamaño de video capturado por la cámara predeterminada usando FFMPEG en Android?
  • Error :() referencia indefinida a `__android_log_write 'ERROR?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.