testsuite: Prevent the main thread from starving the worker threads

This commit is contained in:
Peter Palfrader 2010-04-13 00:10:56 +02:00 committed by Nick Mathewson
parent a02923122e
commit 5e679acc72
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,8 @@
o Minor bugfixes:
- Testsuite: In the util/threads test no longer free the test_mutex
before all worker threads have finished.
- Testsuite: The master thread could starve the worker threads quite
badly on certain systems, causing them to run only partially in
the allowed window. This resulted in test failures. Now the master
thread sleeps occasionally for a few microseconds while the two
worker-threads compete for the mutex.

View File

@ -2326,6 +2326,11 @@ test_util_threads(void)
char *s1 = NULL, *s2 = NULL;
int done = 0, timedout = 0;
time_t started;
#ifndef MS_WINDOWS
struct timeval tv;
tv.tv_sec=0;
tv.tv_usec=10;
#endif
#ifndef TOR_IS_MULTITHREADED
/* Skip this test if we aren't threading. We should be threading most
* everywhere by now. */
@ -2355,6 +2360,10 @@ test_util_threads(void)
timedout = done = 1;
}
tor_mutex_release(_thread_test_mutex);
#ifndef MS_WINDOWS
/* Prevent the main thread from starving the worker threads. */
select(0, NULL, NULL, NULL, &tv);
#endif
}
tor_mutex_acquire(_thread_test_start1);