int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { RT_Class rt_class; Client_Options options (argc, argv); if (parse_args (argc, argv) != 0) return 1; ACE_DEBUG ((LM_DEBUG, "Calibrating high res timer ....")); ACE_High_Res_Timer::calibrate (); ACE_High_Res_Timer::global_scale_factor_type gsf = ACE_High_Res_Timer::global_scale_factor (); ACE_DEBUG ((LM_DEBUG, "Done (%d)\n", gsf)); int thread_count = 1 + options.nthreads; ACE_Barrier the_barrier (thread_count); int per_thread_period = options.low_priority_period; if (options.global_low_priority_rate) per_thread_period = options.low_priority_period * options.nthreads; Scavenger_Task lo_task (lo_endpoint, &the_barrier, per_thread_period); lo_task.activate (rt_class.thr_sched_class () | THR_NEW_LWP | THR_JOINABLE, options.nthreads, 1, rt_class.priority_low ()); Measuring_Task hi_task (hi_endpoint, &the_barrier, options.iterations, options.high_priority_period); hi_task.activate (rt_class.thr_sched_class () | THR_NEW_LWP | THR_JOINABLE, 1, 1, rt_class.priority_low ()); hi_task.wait (); lo_task.stop (); ACE_DEBUG ((LM_DEBUG, "(%P|%t) client - high prio task joined\n")); ACE_Sample_History &history = hi_task.sample_history; if (options.dump_history) { history.dump_samples (ACE_TEXT("HISTORY"), gsf); } ACE_Basic_Stats high_priority_stats; history.collect_basic_stats (high_priority_stats); high_priority_stats.dump_results (ACE_TEXT("High Priority"), gsf); lo_task.wait (); ACE_DEBUG ((LM_DEBUG, "(%P|%t) client - all task(s) joined\n")); return 0; }
int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { /// Move the test to the real-time class if it is possible. RT_Class rt_class; if (parse_args (argc, argv) != 0) return 1; Task hi_task (hi_endpoint); Task lo_task (lo_endpoint); hi_task.activate(rt_class.thr_sched_class() | THR_NEW_LWP | THR_JOINABLE, 1, 1, rt_class.priority_high()); lo_task.activate(rt_class.thr_sched_class() | THR_NEW_LWP | THR_JOINABLE, nthreads, 1, rt_class.priority_low()); lo_task.wait(); hi_task.wait(); return 0; }