1 #ifndef CARMA_UTIL_AUTO_PTHREAD_QUIT_AND_JOIN_GROUP_H
2 #define CARMA_UTIL_AUTO_PTHREAD_QUIT_AND_JOIN_GROUP_H
12 class AutoPthreadQuitAndJoinGroup {
20 explicit AutoPthreadQuitAndJoinGroup();
22 explicit AutoPthreadQuitAndJoinGroup( ::pthread_t thread );
24 explicit AutoPthreadQuitAndJoinGroup( ::pthread_t thread,
27 virtual ~AutoPthreadQuitAndJoinGroup( );
29 void swap( AutoPthreadQuitAndJoinGroup & rhs );
31 void insert( ::pthread_t thread );
33 void insert( ::pthread_t thread,
36 void remove( ::pthread_t thread );
38 void requestQuitsNoThrow( )
const;
42 AutoPthreadQuitAndJoinGroup(
const AutoPthreadQuitAndJoinGroup & rhs );
43 AutoPthreadQuitAndJoinGroup &
44 operator=(
const AutoPthreadQuitAndJoinGroup & rhs );
46 typedef ::std::map< ::pthread_t, Action > ThreadsMap;
59 carma::util::AutoPthreadQuitAndJoinGroup::AutoPthreadQuitAndJoinGroup( ) :
66 carma::util::AutoPthreadQuitAndJoinGroup::AutoPthreadQuitAndJoinGroup(
67 const ::pthread_t thread ) :
70 threads_.insert( ::std::make_pair( thread, QUIT_AND_JOIN_ACTION ) );
75 carma::util::AutoPthreadQuitAndJoinGroup::AutoPthreadQuitAndJoinGroup(
76 const ::pthread_t thread,
77 const Action action ) :
80 threads_.insert( ::std::make_pair( thread, action ) );