int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { const ACE_TCHAR *name = argc == 1 ? ACE_TEXT("hello") : argv[1]; int iterations = argc > 2 ? ACE_OS::atoi (argv[2]) : 100; ACE_Process_Semaphore pm (1, name); ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT); ACE_UNUSED_ARG (sa); for (int i = 0; i < iterations && !done; i++) { ACE_DEBUG ((LM_DEBUG, "(%P|%t) = acquiring\n")); if (pm.acquire () == -1) ACE_DEBUG ((LM_DEBUG, "(%P|%t) = %p\n", "acquire failed")); else ACE_DEBUG ((LM_DEBUG, "(%P|%t) = acquired\n")); ACE_OS::sleep (3); if (pm.release () == -1) ACE_DEBUG ((LM_DEBUG, "(%P|%t) = %p\n", "release failed")); else ACE_DEBUG ((LM_DEBUG, "(%P|%t) = released\n")); if (pm.tryacquire () == -1) ACE_DEBUG ((LM_DEBUG, "(%P|%t) = %p\n", "tryacquire failed")); else ACE_DEBUG ((LM_DEBUG, "(%P|%t) = tryacquire\n")); if (pm.release () == -1) ACE_DEBUG ((LM_DEBUG, "(%P|%t) = %p\n", "release failed")); else ACE_DEBUG ((LM_DEBUG, "(%P|%t) = released\n")); } if (argc > 2) pm.remove (); return 0; }
int ACE_TMAIN (int, ACE_TCHAR *[]) { // Create locked ACE_Process_Semaphore s (0, ACE_TEXT ("AceTest")); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Worker is going to acquire semaphore\n"))); s.acquire (); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Worker has acquired semaphore\n"))); // Do some init stuff. Simulated by a sleep... ACE_OS::sleep(10); s.release(); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Worker released semaphore\n"))); // Do the work... ACE_OS::sleep(5); return 0; }