summaryrefslogtreecommitdiff
path: root/cpp/demo/IceUtil/workqueue/WorkQueue.cpp
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2006-01-25 08:52:50 +0000
committerMatthew Newhook <matthew@zeroc.com>2006-01-25 08:52:50 +0000
commit900eea312a555d974841db4aff8aeedb8bde62b1 (patch)
tree84abe00f2f9977d97620836503d80af23368d228 /cpp/demo/IceUtil/workqueue/WorkQueue.cpp
parenthttp://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=735 (diff)
downloadice-900eea312a555d974841db4aff8aeedb8bde62b1.tar.bz2
ice-900eea312a555d974841db4aff8aeedb8bde62b1.tar.xz
ice-900eea312a555d974841db4aff8aeedb8bde62b1.zip
http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=792
Diffstat (limited to 'cpp/demo/IceUtil/workqueue/WorkQueue.cpp')
-rw-r--r--cpp/demo/IceUtil/workqueue/WorkQueue.cpp34
1 files changed, 23 insertions, 11 deletions
diff --git a/cpp/demo/IceUtil/workqueue/WorkQueue.cpp b/cpp/demo/IceUtil/workqueue/WorkQueue.cpp
index 9630fbe97af..1f6f18c76ac 100644
--- a/cpp/demo/IceUtil/workqueue/WorkQueue.cpp
+++ b/cpp/demo/IceUtil/workqueue/WorkQueue.cpp
@@ -11,11 +11,21 @@
#include <IceUtil/Exception.h>
#include <IceUtil/Monitor.h>
#include <IceUtil/Mutex.h>
+#include <IceUtil/StaticMutex.h>
#include <list>
using namespace std;
+static IceUtil::StaticMutex outputMutex = ICE_STATIC_MUTEX_INITIALIZER;
+
+void
+mtprint(const string& data)
+{
+ IceUtil::StaticMutex::Lock sync(outputMutex);
+ cout << data << flush;
+}
+
class WorkQueue : public IceUtil::Thread
{
public:
@@ -34,7 +44,7 @@ public:
break;
}
- cout << "work item: " << item << endl;
+ mtprint("work item: " + item + "\n");
IceUtil::ThreadControl::sleep(IceUtil::Time::seconds(1));
}
}
@@ -80,26 +90,28 @@ main()
{
WorkQueuePtr h = new WorkQueue();
IceUtil::ThreadControl control = h->start();
- cout << "Pushing work items";
- cout << '.' << flush;
+ mtprint("Pushing work items");
+ mtprint(".");
h->add("item1");
- cout << '.' << flush;
+ mtprint(".");
h->add("item2");
- cout << '.' << flush;
+ mtprint(".");
h->add("item3");
- cout << '.' << flush;
+ mtprint(".");
h->add("item4");
- cout << '.' << flush;
+ mtprint(".");
h->add("item5");
- cout << '.' << flush;
+ mtprint(".");
h->add("destroy");
- cout << " ok" << endl;
- cout << "Waiting for WorkQueue to terminate" << endl;
+ mtprint("ok\n");
+ mtprint("Waiting for WorkQueue to terminate\n");
control.join();
}
catch(const IceUtil::Exception& ex)
{
- cerr << ex << endl;
+ ostringstream os;
+ os << ex << "\n";
+ mtprint(os.str());
return EXIT_FAILURE;
}