diff options
Diffstat (limited to 'docs/tutorials/013/message_queue.cpp')
-rw-r--r-- | docs/tutorials/013/message_queue.cpp | 114 |
1 files changed, 58 insertions, 56 deletions
diff --git a/docs/tutorials/013/message_queue.cpp b/docs/tutorials/013/message_queue.cpp index cabfc5d4655..5128cbbfac4 100644 --- a/docs/tutorials/013/message_queue.cpp +++ b/docs/tutorials/013/message_queue.cpp @@ -8,79 +8,81 @@ int run_test (int iterations, int threads, int subtasks) { - // Create a task with some subtasks. Each Task is a thread - // pool of 'threads' size. If a task has a subtask, it will - // forward the unit of work to the subtask when finished. See - // task.{h|cpp} for more details. - Task * task = new Task(subtasks); + // Create a task with some subtasks. Each Task is a thread + // pool of 'threads' size. If a task has a subtask, it will + // forward the unit of work to the subtask when finished. See + // task.{h|cpp} for more details. + Task *task = new Task (subtasks); - if (task->open (threads) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), -1); - } + if (task->open (threads) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), -1); + } + + // Give the threads a chance to get ready. +ACE_OS::sleep (ACE_Time_Value (1)); - // Give the threads a chance to get ready. - ACE_OS::sleep (ACE_Time_Value (1)); + for (int i = 0; i < iterations; ++i) + { + // Create a custom message block that can contain our Work object + Message_Block *message = new Message_Block (new Work (i)); - for (int i = 0; i < iterations; ++i) + // Put the "unit of work" into the message queue + if (task->putq (message) == -1) { - // Create a custom message block that can contain our Work object - Message_Block *message = new Message_Block( new Work(i) ); - - // Put the "unit of work" into the message queue - if (task->putq (message) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "putq"), -1); - } + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "putq"), -1); } + } - // The default constructor of our custom message block will - // insert a message telling our task to shutdown. - Message_Block *message = new Message_Block( ); + // The default constructor of our custom message block will + // insert a message telling our task to shutdown. + Message_Block *message = new Message_Block (); - // Put the shutdown request into the thread pool - if (task->putq (message) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "putq"), -1); - } + // Put the shutdown request into the thread pool + if (task->putq (message) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "putq"), -1); + } - // Wait for the task to shut down. Any subtasks will also be - // waited for. - task->wait (); + // Wait for the task to shut down. Any subtasks will also be + // waited for. + task->wait (); - // Delete our Task to prevent a memory leak - delete task; + // Delete our Task to prevent a memory leak + delete task; - // Ask our memory leak detector if things are OK - if( MLD_COUNTER != 0 ) - { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Memory Leak!\n")); - } - - return (0); + // Ask our memory leak detector if things are OK + if (MLD_COUNTER != 0) + { + ACE_DEBUG ((LM_DEBUG, "(%P|%t) Memory Leak!\n")); + } + + return (0); } int main (int argc, char *argv[]) { - // Number of Work objects to put into the Task pool - int iterations = argc > 1 ? atoi (argv[1]) : 4; - // Number of threads for each Task - int threads = argc > 2 ? atoi (argv[2]) : 2; - // Number of tasks to chain after the primary task - int subtasks = argc > 3 ? atoi(argv[3]) : 1; - - (void) run_test (iterations, threads, subtasks); - - ACE_DEBUG ((LM_DEBUG, "(%P|%t) Application exiting\n")); - - exit (0); + // Number of Work objects to put into the Task pool + int iterations = argc > 1 ? atoi (argv[1]) : 4; + // Number of threads for each Task + int threads = argc > 2 ? atoi (argv[2]) : 2; + // Number of tasks to chain after the primary task + int subtasks = argc > 3 ? atoi (argv[3]) : 1; + + (void) run_test (iterations, threads, subtasks); + + ACE_DEBUG ((LM_DEBUG, "(%P|%t) Application exiting\n")); + + exit (0); } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Guard<ACE_Mutex>; -template class ACE_Lock_Adapter<ACE_Mutex>; -template class ACE_Atomic_Op<ACE_Mutex, int>; +template class ACE_Guard < ACE_Mutex >; +template class ACE_Lock_Adapter < ACE_Mutex >; +template class ACE_Atomic_Op < ACE_Mutex, int >; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Guard<ACE_Mutex>; #pragma instantiate ACE_Lock_Adapter<ACE_Mutex>; #pragma instantiate ACE_Atomic_Op<ACE_Mutex, int>; -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ +#endif /* + ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION + */ |