diff options
author | Matthew Newhook <matthew@zeroc.com> | 2006-01-25 08:52:50 +0000 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2006-01-25 08:52:50 +0000 |
commit | 900eea312a555d974841db4aff8aeedb8bde62b1 (patch) | |
tree | 84abe00f2f9977d97620836503d80af23368d228 /cpp/demo/IceUtil/workqueue/WorkQueue.cpp | |
parent | http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=735 (diff) | |
download | ice-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.cpp | 34 |
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; } |