Beispiel #1
0
static void *
worker (void *arg)
{
  ACE_Recursive_Thread_Mutex *rm
    = (ACE_Recursive_Thread_Mutex *) arg;

  recursive_worker (0, rm);
  return 0;
}
Beispiel #2
0
static void
recursive_worker (size_t nesting_level,
                  ACE_Recursive_Thread_Mutex *rm)
{
  if (nesting_level < n_iterations)
    {
      ACE_ASSERT (rm->acquire () == 0);
      ACE_DEBUG ((LM_DEBUG,
                  ACE_TEXT ("(%P|%t) = acquired, nesting = %d, thread id = %u\n"),
                  rm->get_nesting_level (),
                  rm->get_thread_id ()));

      recursive_worker (nesting_level + 1,
                        rm);

      ACE_ASSERT (rm->release () == 0);
      ACE_DEBUG ((LM_DEBUG,
                  ACE_TEXT ("(%P|%t) = released, nesting = %d, thread id = %u\n"),
                  rm->get_nesting_level (),
                  rm->get_thread_id ()));
    }
}
Beispiel #3
0
static void
recursive_worker (size_t nesting_level,
                  ACE_Recursive_Thread_Mutex *rm)
{
  if (nesting_level < n_iterations)
    {
      ACE_DEBUG ((LM_DEBUG,
                  "(%P|%t) = trying to acquire, nesting = %d, thread id = %u\n",
      rm->get_nesting_level (), rm->get_thread_id ()));
      {
        // This illustrates the use of the ACE_GUARD with an
        // ACE_Recursive_Thread_Mutex.
        ACE_GUARD (ACE_Recursive_Thread_Mutex, ace_mon, *rm);
        ACE_DEBUG ((LM_DEBUG,
                    "(%P|%t) = acquired, nesting = %d, thread id = %u\n",
        rm->get_nesting_level (), rm->get_thread_id ()));

        recursive_worker (nesting_level + 1, rm);
      }
      ACE_DEBUG ((LM_DEBUG,
                  "(%P|%t) = released, nesting = %d, thread id = %u\n",
      rm->get_nesting_level (), rm->get_thread_id ()));
    }
}