Asynchronous library now in Boost Library Incubator
Dear Community, The Asynchronous library is now listed in the Boost Library Incubator ( http://blincubator.com/bi_library/asynchronous-2/?gform_post_id=1654). I took a lot of time since first presenting it in C++ Now 2014 in order to extend the scope and intensively test the library. The library has been in use in production code for already 1.5 years, has survived billions of calls and usage 24/7, so its core is stable and quite tested. All algorithms have not been used though so that bugs are possible there. The reason for using the Incubator is, the library is quite big and 2 weeks review will not be sufficient so I hope for comments, discussions or pre-reviews earlier on. Asynchronous is first of all an architecture tool. It allows organizing a complete application into Thread Worlds, each world having the possibility to use the same or different threadpools for long-lasting tasks. The library provides an implementation of the Active Object pattern, extended to allow many Active Objects to live in the same World. It provides several Threadpools and many parallel algorithms making use of them. And most important of all, it allows simple, blocking-free asynchronous programming based on thread-safe callbacks. It also provides very useful logging and HTML diagnostics (see https://htmlpreview.github.io/?https://raw.githubusercontent.com/henry-ch/as...) to allow better understanding of code. I look forward to an interesting and lively discussion. Christophe
On 11/27/16 02:21, Christophe Henry wrote:
Dear Community,
<snip it-is-in-the-incubator-and-tested>
The reason for using the Incubator is, the library is quite big and 2 weeks review will not be sufficient so I hope for comments, discussions or pre-reviews earlier on.
<snip what-it-is>
I look forward to an interesting and lively discussion.
Hi Christophe - Thank you for submitting this library to the the incubator in preparation for a review. I saw your presentation in 2014 and I believe that this library solves a common problem. My first question: I see that the library is listed as C++11 and also has dependencies on Boost.System, Boost.Thread, Boost.Chrono, and Boost.DateTime. Much of the functionality provided by those Boost libraries is now part of the C++11 or C++14 standard. Can you comment on the specific Boost dependencies and if the standard versions would suffice? Thanks! michael -- Michael Caisse Ciere Consulting ciere.com
Christophe
The Asynchronous library is now listed in the Boost Library Incubator ( http://blincubator.com/bi_library/asynchronous-2/?gform_post_id=1654). < boost.asynchronous looks to have many of the same features/functionality as HPX. Can I ask why you chose to reimplement futures/lightweight thread pools/parallel STL/etc, rather than working on improving HPX to suit your needs? JB Disclaimer : I have contributed o HPX, but I'm not one of the "German HPC Guys" :) . -- John Biddiscombe, email:biddisco @.at.@ cscs.ch http://www.cscs.ch/ CSCS, Swiss National Supercomputing Centre | Tel: +41 (91) 610.82.07 Via Trevano 131, 6900 Lugano, Switzerland | Fax: +41 (91) 610.82.82
On 11/29/16 8:33 AM, Biddiscombe, John A. wrote:
Christophe
The Asynchronous library is now listed in the Boost Library Incubator ( http://blincubator.com/bi_library/asynchronous-2/?gform_post_id=1654). <
boost.asynchronous looks to have many of the same features/functionality as HPX. Can I ask why you chose to reimplement futures/lightweight thread pools/parallel STL/etc, rather than working on improving HPX to suit your needs?
JB Disclaimer : I have contributed o HPX, but I'm not one of the "German HPC Guys" :) .
Hmmm - HPX looks interesting, but it hasn't been submitted to boost and I haven't heard of any plans to do so. Robert Ramey
Hmmm - HPX looks interesting, but it hasn't been submitted to boost and I haven't heard of any plans to do so. < I make take that statement the wrong way - but it reads to me a bit like "if it isn't part of boost, then it doesn't exist". My understanding is that HPX isn't ever going to be part of boost, though it does use quite a lot of it. JB
On 12/1/16 6:05 AM, Biddiscombe, John A. wrote:
Hmmm - HPX looks interesting, but it hasn't been submitted to boost and I haven't heard of any plans to do so. <
I make take that statement the wrong way - but it reads to me a bit like "if it isn't part of boost, then it doesn't exist".
I meant more like: "Can Boost you an async library? If so, here is a proposal for one." I don't know if the existence of some other library makes it uninteresting to consider this proposal.
My understanding is that HPX isn't ever going to be part of boost, though it does use quite a lot of it.
JB
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-----Original Message----- From: Boost [mailto:boost-bounces@lists.boost.org] On Behalf Of Christophe Henry Sent: 27 November 2016 10:21 To: boost@lists.boost.org Subject: [boost] Asynchronous library now in Boost Library Incubator
Dear Community,
The Asynchronous library is now listed in the Boost Library Incubator ( http://blincubator.com/bi_library/asynchronous-2/?gform_post_id=1654). I took a lot of time since first presenting it in C++ Now 2014 in order to extend the scope and intensively test the library. The library has been in use in production code for already 1.5 years, has survived billions of calls and usage 24/7, so its core is stable and quite tested. All algorithms have not been used though so that bugs are possible there. The reason for using the Incubator is, the library is quite big and 2 weeks review will not be sufficient so I hope for comments, discussions or pre-reviews earlier on.
Asynchronous is first of all an architecture tool. It allows organizing a complete application into Thread Worlds, each world having the possibility to use the same or different threadpools for long-lasting tasks. The library provides an implementation of the Active Object pattern, extended to allow many Active Objects to live in the same World. It provides several Threadpools and many parallel algorithms making use of them. And most important of all, it allows simple, blocking-free asynchronous programming based on thread-safe callbacks. It also provides very useful logging and HTML diagnostics (see https://htmlpreview.github.io/?https://raw.githubusercontent.com/henry- ch/asynchronous/master/libs/asynchronous/doc/examples/final.html) to allow better understanding of code.
I look forward to an interesting and lively discussion.
I'm trying to digest the docs for this monster work. One things that strikes me immediately is that the doc preparation does not use code snippets, and so code is in boring old black'n'white rather than colored syntax. For me, that makes it significantly harder to read (and understand) the code examples. It also means that one doesn't have the assurance that 'What You See is What Compiles'. (I've also having trouble finding things in all the plentiful 'good stuff'. But that's a common (and largely still unsolved) problem with all documentation.) Paul --- Paul A. Bristow Prizet Farmhouse Kendal UK LA8 8AB +44 (0) 1539 561830
Hi Henry, On 11/27/2016 11:21 AM, Christophe Henry wrote:
Dear Community,
The Asynchronous library is now listed in the Boost Library Incubator ( http://blincubator.com/bi_library/asynchronous-2/?gform_post_id=1654). I took a lot of time since first presenting it in C++ Now 2014 in order to extend the scope and intensively test the library. The library has been in use in production code for already 1.5 years, has survived billions of calls and usage 24/7, so its core is stable and quite tested. All algorithms have not been used though so that bugs are possible there. The reason for using the Incubator is, the library is quite big and 2 weeks review will not be sufficient so I hope for comments, discussions or pre-reviews earlier on.
After having a deeper dive into the documentation and examples, one pattern I see popping up quite frequently is this: future<R> fut = my_promise.get_future(); post_callback(some_work, [this](expected<R> r) { this->my_promise.set_value(r.get()); }); return fut; Is there any performance/usability drawback from this (might have gotten the syntax wrong here): return post_future(pool, some_work); Why is the former to be preferred to the latter, or vice versa? Regarding the documentation overall, it seems to miss a proper reference section. For example, boost::asynchronous::expected is used almost everywhere, but not documented.
Asynchronous is first of all an architecture tool. It allows organizing a complete application into Thread Worlds, each world having the possibility to use the same or different threadpools for long-lasting tasks. The library provides an implementation of the Active Object pattern, extended to allow many Active Objects to live in the same World. It provides several Threadpools and many parallel algorithms making use of them. And most important of all, it allows simple, blocking-free asynchronous programming based on thread-safe callbacks. It also provides very useful logging and HTML diagnostics (see https://htmlpreview.github.io/?https://raw.githubusercontent.com/henry-ch/as...) to allow better understanding of code.
I look forward to an interesting and lively discussion.
Christophe
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Thomas Heller Friedrich-Alexander-Universität Erlangen-Nürnberg Department Informatik - Lehrstuhl Rechnerarchitektur Martensstr. 3 91058 Erlangen Tel.: 09131/85-27018 Fax: 09131/85-27912 Email: thomas.heller@cs.fau.de
participants (6)
-
Biddiscombe, John A.
-
Christophe Henry
-
Michael Caisse
-
Paul A. Bristow
-
Robert Ramey
-
Thomas Heller