#include <pthread.h>
static pthread_mutex_t gMutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(gMutex);
pthread_mutex_unlock(gMutex);
pthread_mutex_trylock(gMutex);
以下代码来自:frameworks/native/libs/binder/BufferedTextOutput.cpp
static pthread_mutex_t gMutex = PTHREAD_MUTEX_INITIALIZER;
static int32_t allocBufferIndex()
{
int32_t res = -1;
pthread_mutex_lock(&gMutex);
if (gFreeBufferIndex >= 0) {
res = gFreeBufferIndex;
gFreeBufferIndex = gTextBuffers[res];
gTextBuffers.editItemAt(res) = -1;
} else {
res = gTextBuffers.size();
gTextBuffers.add(-1);
}
pthread_mutex_unlock(&gMutex);
return res;
}
static void freeBufferIndex(int32_t idx)
{
pthread_mutex_lock(&gMutex);
gTextBuffers.editItemAt(idx) = gFreeBufferIndex;
gFreeBufferIndex = idx;
pthread_mutex_unlock(&gMutex);
}