Github   Telegram
No Matches
Public Member Functions | List of all members
concurrent::BackgroundTaskStorage Class Referencefinal

#include <userver/concurrent/background_task_storage.hpp>

Public Member Functions

 BackgroundTaskStorage ()
 BackgroundTaskStorage (engine::TaskProcessor &task_processor)
 Creates a BTS that launches tasks in the specified engine::TaskProcessor.
 BackgroundTaskStorage (const BackgroundTaskStorage &)=delete
BackgroundTaskStorageoperator= (const BackgroundTaskStorage &)=delete
void CancelAndWait () noexcept
template<typename... Args>
void AsyncDetach (std::string name, Args &&... args)
 Launch a task that will be cancelled and waited for in the BTS destructor.
template<typename... Args>
void AsyncDetach (engine::TaskProcessor &task_processor, std::string name, Args &&... args)
void Detach (engine::Task &&task)
std::int64_t ActiveTasksApprox () const noexcept
 Approximate number of currently active tasks.

Detailed Description

A storage that allows one to start detached tasks; cancels and waits for unfinished tasks completion at the destructor. Provides CancelAndWait to explicitly cancel tasks (recommended).

Usable for detached tasks that capture references to resources with a limited lifetime. You must guarantee that the resources are available while the BackgroundTaskStorage is alive.

Usage synopsis

std::string x = kString;
std::string y;
// You must guarantee that 'x' and 'y' are alive during 'bts' lifetime.
bts.AsyncDetach("task", [&x, &y] {
y = std::move(x);
// It is recommended to call CancelAndWait explicitly for the clarity of
// tasks' lifetime. BTS destructor calls CancelAndWait implicitly as well.

Definition at line 58 of file background_task_storage.hpp.

Constructor & Destructor Documentation

◆ BackgroundTaskStorage()

concurrent::BackgroundTaskStorage::BackgroundTaskStorage ( )

Creates a BTS that launches tasks in the engine::TaskProcessor used at the BTS creation.

Member Function Documentation

◆ AsyncDetach() [1/2]

template<typename... Args>
void concurrent::BackgroundTaskStorage::AsyncDetach ( engine::TaskProcessor &  task_processor,
std::string  name,
Args &&...  args 
Pass engine::TaskProcessor to BTS constructor instead.

Definition at line 88 of file background_task_storage.hpp.

◆ AsyncDetach() [2/2]

template<typename... Args>
void concurrent::BackgroundTaskStorage::AsyncDetach ( std::string  name,
Args &&...  args 

Launch a task that will be cancelled and waited for in the BTS destructor.

The task is started as non-Critical, it may be cancelled due to TaskProcessor overload. engine::TaskInheritedVariable instances are not inherited from the caller. See utils::AsyncBackground for details.

Definition at line 81 of file background_task_storage.hpp.

◆ CancelAndWait()

void concurrent::BackgroundTaskStorage::CancelAndWait ( )

Explicitly cancel and wait for the tasks. New tasks must not be launched after this call returns. Should be called no more than once.

◆ Detach()

void concurrent::BackgroundTaskStorage::Detach ( engine::Task &&  task)
Use AsyncDetach or BackgroundTaskStorageCore instead.

Definition at line 95 of file background_task_storage.hpp.

The documentation for this class was generated from the following file: