summaryrefslogtreecommitdiff
path: root/examples/Threads/process_mutex.cpp
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>1996-12-08 22:07:49 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>1996-12-08 22:07:49 +0000
commit0edea73000df2676d1dd6b7fffe685f3f5030ac0 (patch)
tree923fca319913deedf33f4f1b95dc25736f288493 /examples/Threads/process_mutex.cpp
parent5835ba093f74dda2dadd22e3872c1debdee65355 (diff)
downloadATCD-0edea73000df2676d1dd6b7fffe685f3f5030ac0.tar.gz
foo
Diffstat (limited to 'examples/Threads/process_mutex.cpp')
-rw-r--r--examples/Threads/process_mutex.cpp68
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 */