Example #1
0
	void trigger() {
		if(m_state == TRIGGERED || m_state == DISMISSED) {
			return;
		}

		m_state = TRIGGERED;
		m_promise.set_value();
	}
Example #2
0
  
#ifdef MULTITHREADED
  threads.join_all();
#endif // MULTITHREADED

  int value = result.get();

  // Attach breakpoint here ,-)
  return value;
}

TEST_CASE("Basic future_t and promise_t tests", "[future_t & promise_t]")
{
  SECTION("The future_t is available after the value was passed to the promise")
  {
    promise_t<bool> promise;
    auto future = promise.get_future();
    REQUIRE_FALSE(future.is_ready());
    promise.set_value(true);
    REQUIRE(future.is_ready());
    CHECK(future.get());
  }

  SECTION("Futures are chainable")
  {
    promise_t<int> promise;
    auto future = promise.get_future().then(
      [](future_t<int> future)
    {
      REQUIRE(future.is_ready());
      CHECK(future.get() == 100);
Example #3
0
 auto get_future() { return promise_.get_future(); }
Example #4
0
	delayed_thread(op_t &&op)
	: m_thread([op = decay_copy(std::forward<op_t>(op)), &m_promise = m_promise]() {
		m_promise.get_future().wait();
		op();
	}) {}