]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/fiber/examples/ping_pong.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / fiber / examples / ping_pong.cpp
CommitLineData
b32b8144
FG
1
2// Copyright Oliver Kowalke 2013.
3// Distributed under the Boost Software License, Version 1.0.
4// (See accompanying file LICENSE_1_0.txt or copy at
5// http://www.boost.org/LICENSE_1_0.txt)
6
7c673cae
FG
7#include <cstdlib>
8#include <iostream>
b32b8144 9#include <stdexcept>
7c673cae
FG
10#include <string>
11
7c673cae
FG
12#include <boost/fiber/all.hpp>
13
b32b8144
FG
14int main() {
15 using channel_t = boost::fibers::buffered_channel< std::string >;
16 try {
17 channel_t chan1{ 2 }, chan2{ 2 };
18
19 boost::fibers::fiber fping([&chan1,&chan2]{
20 chan1.push( "ping");
21 std::cout << chan2.value_pop() << "\n";
22 chan1.push( "ping");
23 std::cout << chan2.value_pop() << "\n";
24 chan1.push( "ping");
25 std::cout << chan2.value_pop() << "\n";
26 });
27 boost::fibers::fiber fpong([&chan1,&chan2]{
28 std::cout << chan1.value_pop() << "\n";
29 chan2.push( "pong");
30 std::cout << chan1.value_pop() << "\n";
31 chan2.push( "pong");
32 std::cout << chan1.value_pop() << "\n";
33 chan2.push( "pong");
34 });
35
36 fping.join();
37 fpong.join();
7c673cae
FG
38
39 std::cout << "done." << std::endl;
40
41 return EXIT_SUCCESS;
42 }
43 catch ( std::exception const& e)
44 { std::cerr << "exception: " << e.what() << std::endl; }
45 catch (...)
46 { std::cerr << "unhandled exception" << std::endl; }
47 return EXIT_FAILURE;
48}