What we've done is create two Task-derived objects that test different locking mechanisms. The Token object uses ACE_Token and the Mutex object uses ACE_Mutex. When you execute the application you should see quite a difference in thread utilization. At the end of the tutorial I've included a link to the output of a typical run of the application.
// $Id$ // Get our two Test derivatives... #include "Token_i.h" #include "Mutex_i.h" int main(int,char**) { // See what an ACE_Token does for us. Token token; token.run(); // And now the ACE_Mutex. Mutex mutex; mutex.run(); return(0); } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class Test_T <ACE_Mutex>; template class Test_T <ACE_Token>; template class ACE_Atomic_Op <ACE_Mutex, int>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate Test_T <ACE_Mutex> #pragma instantiate Test_T <ACE_Token> #pragma instantiate ACE_Atomic_Op <ACE_Mutex, int> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */