.. _module-pw_async_basic:

================
pw_async_basic
================

This module includes basic implementations of pw_async's Dispatcher and
FakeDispatcher.

---
API
---
.. doxygenclass:: pw::async::BasicDispatcher
   :members:

-----
Usage
-----
First, set the following GN variables:

.. code-block::

   pw_async_TASK_BACKEND="$dir_pw_async_basic:task"
   pw_async_FAKE_DISPATCHER_BACKEND="$dir_pw_async_basic:fake_dispatcher"


Next, create a target that depends on ``//pw_async_basic:dispatcher``:

.. code-block::

   pw_executable("hello_world") {
     sources = [ "hello_world.cc" ]
     deps = [
       "//pw_async_basic:dispatcher",
     ]
   }

Next, construct and use a ``BasicDispatcher``.

.. code-block:: cpp

  #include "pw_async_basic/dispatcher.h"

  void DelayedPrint(pw::async::Dispatcher& dispatcher) {
    dispatcher.PostAfter([](auto&){
       printf("hello world\n");
    }, 5s);
  }

  int main() {
    pw::async::BasicDispatcher dispatcher;
    DelayedPrint(dispatcher);
    dispatcher.RunFor(10s);
    return 0;
  }

-----------
Size Report
-----------
.. include:: docs_size_report
