$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r55612 - sandbox/task/libs/task/examples
From: oliver.kowalke_at_[hidden]
Date: 2009-08-16 09:08:02
Author: olli
Date: 2009-08-16 09:08:01 EDT (Sun, 16 Aug 2009)
New Revision: 55612
URL: http://svn.boost.org/trac/boost/changeset/55612
Log:
- missing headers added
Added:
   sandbox/task/libs/task/examples/buffer.hpp   (contents, props changed)
   sandbox/task/libs/task/examples/semaphore.hpp   (contents, props changed)
Added: sandbox/task/libs/task/examples/buffer.hpp
==============================================================================
--- (empty file)
+++ sandbox/task/libs/task/examples/buffer.hpp	2009-08-16 09:08:01 EDT (Sun, 16 Aug 2009)
@@ -0,0 +1,59 @@
+
+//          Copyright Oliver Kowalke 2009.
+// Distributed under the Boost Software License, Version 1.0.
+//    (See accompanying file LICENSE_1_0.txt or copy at
+//          http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TASK_EXAMPLES_BUFFER_H
+#define BOOST_TASK_EXAMPLES_BUFFER_H
+
+#include <cstdlib>
+#include <string>
+
+#include <boost/assert.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/optional.hpp>
+
+#include "boost/task.hpp"
+
+namespace tsk = boost::task;
+
+inline
+void send_ping(
+		int n,
+		tsk::unbounded_buffer< std::string > & buf_ping,
+		tsk::unbounded_buffer< std::string > & buf_pong)
+{
+	for ( int i = 0; i < n; ++i)
+	{
+		printf("task 1: buf_ping.put(%d-th ping)\n", i);
+		buf_ping.put(
+				boost::lexical_cast< std::string >( i) + "-th ping");
+		boost::optional< std::string > msg;
+	   	buf_pong.take( msg);
+		BOOST_ASSERT( msg);
+		printf("task 1: buf_pong.take(%s)\n", msg->c_str() );
+	}
+	printf("task 1: end\n");
+}
+
+inline
+void send_pong(
+		int n,
+		tsk::unbounded_buffer< std::string > & buf_ping,
+		tsk::unbounded_buffer< std::string > & buf_pong)
+{
+	for ( int i = 0; i < n; ++i)
+	{
+		printf("task 2: buf_pong.put(%d-th pong)\n", i);
+		buf_pong.put(
+				boost::lexical_cast< std::string >( i) + "-th pong");
+		boost::optional< std::string > msg;
+	   	buf_ping.take( msg);
+		BOOST_ASSERT( msg);
+		printf("task 2: buf_ping.take(%s)\n", msg->c_str() );
+	}
+	printf("task 2: end\n");
+}
+
+#endif // BOOST_TASK_EXAMPLES_BUFFER_H
Added: sandbox/task/libs/task/examples/semaphore.hpp
==============================================================================
--- (empty file)
+++ sandbox/task/libs/task/examples/semaphore.hpp	2009-08-16 09:08:01 EDT (Sun, 16 Aug 2009)
@@ -0,0 +1,64 @@
+
+//          Copyright Oliver Kowalke 2009.
+// Distributed under the Boost Software License, Version 1.0.
+//    (See accompanying file LICENSE_1_0.txt or copy at
+//          http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TASK_EXAMPLES_SEMAPHORE_H
+#define BOOST_TASK_EXAMPLES_SEMAPHORE_H
+
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
+#include <boost/bind.hpp>
+#include <boost/ref.hpp>
+
+#include "boost/task.hpp"
+
+namespace tsk = boost::task;
+
+inline
+void loop_fn( int n)
+{
+	for ( int i = 0; i < n; ++i)
+	{
+		printf("task 3: %d-th iteration\n", i);
+		boost::this_task::block();
+	}
+	printf("task 3: end\n");
+}
+
+inline
+void start_with_sem_a(
+		int n,
+		tsk::semaphore & sem_a,
+		tsk::semaphore & sem_b)
+{
+	for ( int i = 0; i < n; ++i)
+	{
+		printf("task 1: %d-th sema_a.post()\n", i);
+		sem_a.post();
+		printf("task 1: %d-th sema_b.wait()\n", i);
+		sem_b.wait();
+	}
+	printf("task 1: end\n");
+}
+
+inline
+void start_with_sem_b(
+		int n,
+		tsk::semaphore & sem_a,
+		tsk::semaphore & sem_b)
+{
+	for ( int i = 0; i < n; ++i)
+	{
+		printf("task 2: %d-th sema_b.post()\n", i);
+		sem_b.post();
+		printf("task 2: %d-th sema_a.wait()\n", i);
+		sem_a.wait();
+	}
+	printf("task 2: end\n");
+}
+
+#endif // BOOST_TASK_EXAMPLES_SEMAPHORE_H