diff options
author | schmidt <douglascraigschmidt@users.noreply.github.com> | 1996-12-08 22:07:49 +0000 |
---|---|---|
committer | schmidt <douglascraigschmidt@users.noreply.github.com> | 1996-12-08 22:07:49 +0000 |
commit | 0edea73000df2676d1dd6b7fffe685f3f5030ac0 (patch) | |
tree | 923fca319913deedf33f4f1b95dc25736f288493 /examples/Threads/process_mutex.cpp | |
parent | 5835ba093f74dda2dadd22e3872c1debdee65355 (diff) | |
download | ATCD-0edea73000df2676d1dd6b7fffe685f3f5030ac0.tar.gz |
foo
Diffstat (limited to 'examples/Threads/process_mutex.cpp')
-rw-r--r-- | examples/Threads/process_mutex.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/examples/Threads/process_mutex.cpp b/examples/Threads/process_mutex.cpp new file mode 100644 index 00000000000..fb23c8b73be --- /dev/null +++ b/examples/Threads/process_mutex.cpp @@ -0,0 +1,68 @@ +// $Id$ + +// This program tests ACE_Process_Mutexes. To run it, open 3 or 4 +// windows and run this program in each window... + +#include "ace/Synch.h" +#include "ace/Signal.h" + +#if defined (ACE_HAS_THREADS) + +static sig_atomic_t done; + +extern "C" void +handler (int) +{ + done = 1; +} + +int +main (int argc, char *argv[]) +{ + char *name = argc > 1 ? argv[1] : "hello"; + int iterations = argc > 2 ? ACE_OS::atoi (argv[2]) : 100; + + ACE_Process_Mutex pm (name); + + // Register a signal handler. + ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT); + + 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; +} +#else +int +main (void) +{ + ACE_ERROR_RETURN ((LM_ERROR, + "ACE doesn't support support threads on this platform (yet)\n"), + -1); +} +#endif /* ACE_HAS_THREADS */ |