Added regression test for Boost.Threads.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8763
This commit is contained in:
Bart Van Assche 2008-11-10 18:54:46 +00:00
parent 0fc6d04d97
commit a4ddba81ca
4 changed files with 67 additions and 16 deletions

View File

@ -20,6 +20,8 @@ EXTRA_DIST = \
atomic_var.stderr.exp-with-atomic-builtins \
atomic_var.stderr.exp-without-atomic-builtins \
atomic_var.vgtest \
boost_threads.stderr.exp \
boost_threads.vgtest \
drd_bitmap_test.stderr.exp \
drd_bitmap_test.stdout.exp \
drd_bitmap_test.vgtest \
@ -247,14 +249,18 @@ check_PROGRAMS = \
tc24_nonzero_sem \
trylock
if HAVE_QTCORE
check_PROGRAMS += qt4_mutex qt4_rwlock qt4_semaphore
if HAVE_BOOST_1_35
check_PROGRAMS += boost_threads
endif
if HAVE_OPENMP
check_PROGRAMS += omp_matinv omp_prime omp_printf
endif
if HAVE_QTCORE
check_PROGRAMS += qt4_mutex qt4_rwlock qt4_semaphore
endif
atomic_var_SOURCES = atomic_var.c
atomic_var_LDADD = -lpthread
@ -331,20 +337,6 @@ pth_inconsistent_cond_wait_LDADD = -lpthread
pth_spinlock_SOURCES = pth_spinlock.c
pth_spinlock_LDADD = -lpthread
if HAVE_QTCORE
qt4_mutex_SOURCES = qt4_mutex.cpp
qt4_mutex_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
qt4_mutex_LDADD = $(QTCORE_LIBS)
qt4_rwlock_SOURCES = qt4_rwlock.cpp
qt4_rwlock_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
qt4_rwlock_LDADD = $(QTCORE_LIBS)
qt4_semaphore_SOURCES = qt4_semaphore.cpp
qt4_semaphore_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
qt4_semaphore_LDADD = $(QTCORE_LIBS)
endif
recursive_mutex_SOURCES = recursive_mutex.c
recursive_mutex_LDADD = -lpthread
@ -432,6 +424,12 @@ tc24_nonzero_sem_LDADD = -lpthread
trylock_SOURCES = trylock.c
trylock_LDADD = -lpthread -lrt
if HAVE_BOOST_1_35
boost_threads_SOURCES = boost_threads.cpp
boost_threads_CXXFLAGS = $(AM_CXXFLAGS) $(BOOST_CFLAGS)
boost_threads_LDADD = $(BOOST_LIBS)
endif
if HAVE_OPENMP
omp_matinv_SOURCES = omp_matinv.c
omp_matinv_CFLAGS = $(AM_CFLAGS) -fopenmp
@ -448,3 +446,17 @@ omp_printf_CFLAGS = $(AM_CFLAGS) -fopenmp
omp_printf_LDFLAGS = -fopenmp
omp_printf_LDADD = -lm
endif
if HAVE_QTCORE
qt4_mutex_SOURCES = qt4_mutex.cpp
qt4_mutex_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
qt4_mutex_LDADD = $(QTCORE_LIBS)
qt4_rwlock_SOURCES = qt4_rwlock.cpp
qt4_rwlock_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
qt4_rwlock_LDADD = $(QTCORE_LIBS)
qt4_semaphore_SOURCES = qt4_semaphore.cpp
qt4_semaphore_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
qt4_semaphore_LDADD = $(QTCORE_LIBS)
endif

View File

@ -0,0 +1,30 @@
#include <boost/thread/condition.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/thread.hpp>
#include <iostream>
static boost::condition s_cva;
static boost::mutex s_m;
static void thread_func(void)
{
std::cerr << "Thread 2.\n";
boost::mutex::scoped_lock sl(s_m);
s_cva.notify_all();
s_cva.wait(sl);
}
int main(int argc, char** argv)
{
std::cerr << "Thread 1.\n";
boost::mutex::scoped_lock sl(s_m);
boost::thread t(thread_func);
s_cva.wait(sl);
s_cva.notify_all();
sl.unlock();
t.join();
std::cerr << "Finished.\n";
return 0;
}

View File

@ -0,0 +1,6 @@
Thread 1.
Thread 2.
Finished.
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

View File

@ -0,0 +1,3 @@
prereq: test -e boost_threads
vgopts: --var-info=yes
prog: boost_threads