[pypy-commit] pypy gil-improvement: Tweaks.
arigo
noreply at buildbot.pypy.org
Mon Oct 3 08:39:23 CEST 2011
Author: Armin Rigo <arigo at tunes.org>
Branch: gil-improvement
Changeset: r47788:bdeb78cfcd9f
Date: 2011-10-03 08:11 +0200
http://bitbucket.org/pypy/pypy/changeset/bdeb78cfcd9f/
Log: Tweaks.
diff --git a/pypy/translator/c/src/thread_nt.h b/pypy/translator/c/src/thread_nt.h
--- a/pypy/translator/c/src/thread_nt.h
+++ b/pypy/translator/c/src/thread_nt.h
@@ -251,9 +251,9 @@
normally specifying a timeout of INFINITE would be fine. But the
first and second operations are not done atomically, so there is a
(small) risk that PulseEvent misses the WaitForSingleObject().
- In this case the process will just sleep 1 millisecond. */
+ In this case the process will just sleep a few milliseconds. */
LeaveCriticalSection(&mutex_gil);
- WaitForSingleObject(&cond_gil, 1);
+ WaitForSingleObject(&cond_gil, 15);
EnterCriticalSection(&mutex_gil);
InterlockedDecrement(&pending_acquires);
diff --git a/pypy/translator/c/src/thread_pthread.h b/pypy/translator/c/src/thread_pthread.h
--- a/pypy/translator/c/src/thread_pthread.h
+++ b/pypy/translator/c/src/thread_pthread.h
@@ -536,10 +536,10 @@
return 0;
atomic_add(&pending_acquires, 1L);
_debug_print("{");
+ ASSERT_STATUS(pthread_cond_signal(&cond_gil));
ASSERT_STATUS(pthread_cond_wait(&cond_gil, &mutex_gil));
_debug_print("}");
atomic_add(&pending_acquires, -1L);
- ASSERT_STATUS(pthread_cond_signal(&cond_gil));
assert_has_the_gil();
return 1;
}
@@ -552,6 +552,7 @@
#endif
assert_has_the_gil();
ASSERT_STATUS(pthread_mutex_unlock(&mutex_gil));
+ ASSERT_STATUS(pthread_cond_signal(&cond_gil));
}
void RPyGilAcquire(void)
@@ -564,7 +565,6 @@
ASSERT_STATUS(pthread_mutex_lock(&mutex_gil));
atomic_add(&pending_acquires, -1L);
assert_has_the_gil();
- ASSERT_STATUS(pthread_cond_signal(&cond_gil));
_debug_print("RPyGilAcquire\n");
}
More information about the pypy-commit
mailing list