Browse Source

cheap trick to further optimize locking normal mutexes

Rich Felker 14 years ago
parent
commit
ec2e50d0d7
2 changed files with 2 additions and 2 deletions
  1. 1 1
      src/thread/pthread_mutex_lock.c
  2. 1 1
      src/thread/pthread_mutex_trylock.c

+ 1 - 1
src/thread/pthread_mutex_lock.c

@@ -4,7 +4,7 @@ int pthread_mutex_lock(pthread_mutex_t *m)
 {
 	int r;
 
-	if (m->_m_type == PTHREAD_MUTEX_NORMAL && !a_swap(&m->_m_lock, 1))
+	if (m->_m_type == PTHREAD_MUTEX_NORMAL && !a_swap(&m->_m_lock, EBUSY))
 		return 0;
 
 	while ((r=pthread_mutex_trylock(m)) == EBUSY) {

+ 1 - 1
src/thread/pthread_mutex_trylock.c

@@ -7,7 +7,7 @@ int pthread_mutex_trylock(pthread_mutex_t *m)
 	pthread_t self;
 
 	if (m->_m_type == PTHREAD_MUTEX_NORMAL)
-		return -a_swap(&m->_m_lock, 1) & EBUSY;
+		return a_swap(&m->_m_lock, EBUSY);
 
 	self = pthread_self();
 	tid = self->tid | 0x80000000;