[t:4288], fix performance issue in unlock_worker_op in stress tests

git-svn-id: file:///svn/toku/tokudb@39608 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
Zardosht Kasheff 2013-04-17 00:00:09 -04:00 committed by Yoni Fogel
parent 2c07ae33d7
commit a6b90f1942

View file

@ -121,15 +121,17 @@ static void lock_worker_op(struct worker_extra* we) {
static void unlock_worker_op(struct worker_extra* we) {
ARG arg = we->thread_arg;
toku_pthread_mutex_lock(we->operation_lock_mutex);
if (arg->lock_type == STRESS_LOCK_SHARED) {
rwlock_read_unlock(we->operation_lock);
} else if (arg->lock_type == STRESS_LOCK_EXCL) {
rwlock_write_unlock(we->operation_lock);
} else {
assert(arg->lock_type == STRESS_LOCK_NONE);
if (arg->lock_type != STRESS_LOCK_NONE) {
toku_pthread_mutex_lock(we->operation_lock_mutex);
if (arg->lock_type == STRESS_LOCK_SHARED) {
rwlock_read_unlock(we->operation_lock);
} else if (arg->lock_type == STRESS_LOCK_EXCL) {
rwlock_write_unlock(we->operation_lock);
} else {
assert(false);
}
toku_pthread_mutex_unlock(we->operation_lock_mutex);
}
toku_pthread_mutex_unlock(we->operation_lock_mutex);
}
static void *worker(void *arg_v) {