Merge branch threadshare-tokio-0.2 with master
This is the result of a set of MR which originated in the migration from tokio-0.1.x
to tokio-0.2.x
. tokio-0.2.x
introduced breaking changes and came along with the stablilization of the async
& await
features in Rust. The migration process followed various beta releases of tokio-0.2.x
and was an opportunity to experiment with alternative designs for the threadshare
framework.
This MR is the result of the following previous MR:
- Initial migration to
tokio-0.2.0-beta.4
, some use ofasync
/await
and migration to Rust edition 2018 (nightly, then beta toolchain). !164 (merged) - First design rework proposal + migration to
tokio-0.2.0-beta.6
. This design aimed at factorizing thethreadshare
components as much as possible in order to simplify the implementation and maintenance ofthreadshare
elements. It was superseded by thePad{Src,Sink}
design (see below). !170 (merged) -
Pad{Src,Sink}
, aka Pad Wrapper design. This design is based on this description and was adopted for merge withmaster
. This version was still based ontokio-0.2.0-beta.6
. !204 (merged) -
tokio-0.2.0
removed functions that thethreadshare
framework relied on to implement an executor with a throttling strategy. This strategy consists in grouping tasks, timers and I/O handling so as to reduce system calls and context switches, thus reducing CPU load and increasing bandwidth. A branch was created to implement throttling intokio
itself and benefit fromtokio
's timer implementation instead of relying on our own. Thethreadshare
framework uses this branch until it gets merged in upstreamtokio
. !211 (merged)