int main (int, ACE_TCHAR *[]) { ACE_START_TEST (ACE_TEXT ("Thread_Manager_Test")); int status = 0; #if defined (ACE_HAS_THREADS) int n_iterations = DEFAULT_ITERATIONS; u_int i; // Dynamically allocate signalled so that we can control when it // gets deleted. Specifically, we need to delete it before the main // thread's TSS is cleaned up. ACE_NEW_RETURN (signalled, ACE_thread_t[n_threads], 1); // Initialize each ACE_thread_t to avoid Purify UMR's. for (i = 0; i < n_threads; ++i) signalled[i] = ACE_OS::NULL_thread; // And similarly, dynamically allocate the thread_start barrier. ACE_NEW_RETURN (thread_start, ACE_Barrier (n_threads + 1), -1); // Register a signal handler. ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT); ACE_UNUSED_ARG (sa); ACE_Thread_Manager *thr_mgr = ACE_Thread_Manager::instance (); #if defined (VXWORKS) // Assign thread (VxWorks task) names to test that feature. ACE_thread_t *thread_name; ACE_NEW_RETURN (thread_name, ACE_thread_t[n_threads], -1); // And test the ability to specify stack size. size_t *stack_size; ACE_NEW_RETURN (stack_size, size_t[n_threads], -1); for (i = 0; i < n_threads; ++i) { if (i < n_threads - 1) { ACE_NEW_RETURN (thread_name[i], char[32], -1); ACE_OS::sprintf (thread_name[i], ACE_TEXT ("thread%u"), i); } else
void Activity::activate_schedule (void) { TASK_LIST list; int count = builder_->task_list (list); if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "Activating schedule, task count = %d\n", count)); ACE_NEW (barrier_, ACE_Barrier (count+1)); Periodic_Task* task; for (int i = 0; i < count; ++i) { task = list[i]; // resolve the object from the naming service CosNaming::Name name (1); name.length (1); name[0].id = CORBA::string_dup (task->job ()); CORBA::Object_var obj = this->naming_->resolve (name); Job_var job = Job::_narrow (obj.in ()); if (TAO_debug_level > 0) { // Check that the object is configured with some // PriorityModelPolicy. CORBA::Policy_var policy = job->_get_policy (RTCORBA::PRIORITY_MODEL_POLICY_TYPE); RTCORBA::PriorityModelPolicy_var priority_policy = RTCORBA::PriorityModelPolicy::_narrow (policy.in ()); if (CORBA::is_nil (priority_policy.in ())) ACE_DEBUG ((LM_DEBUG, "ERROR: Priority Model Policy not exposed!\n")); else { RTCORBA::PriorityModel priority_model = priority_policy->priority_model (); if (priority_model == RTCORBA::CLIENT_PROPAGATED) ACE_DEBUG ((LM_DEBUG, "%C priority_model = RTCORBA::CLIENT_PROPAGATED\n", task->job ())); else ACE_DEBUG ((LM_DEBUG, "%C priority_model = RTCORBA::SERVER_DECLARED\n", task->job ())); } } /* if (TAO_debug_level > 0) */ task->job (job.in ()); task->activate_task (this->barrier_, this->priority_mapping_); active_task_count_++; ACE_DEBUG ((LM_DEBUG, "Job %C scheduled\n", task->job ())); } ACE_DEBUG ((LM_DEBUG, "(%P,%t) Waiting for tasks to synch...\n")); barrier_->wait (); ACE_DEBUG ((LM_DEBUG, "(%P,%t) Tasks have synched...\n")); }