class LockFreeTaskRunner

Defined at line 58 of file ../../third_party/perfetto/include/perfetto/ext/base/lock_free_task_runner.h

This class implements a lock-less multi-producer single-consumer task runner.

This is achieved by using a linked list of "slabs". Each slab is a fixed-size

array of tasks.

See /docs/design-docs/lock-free-task-runner.md for more details

Public Methods

void LockFreeTaskRunner ()
void ~LockFreeTaskRunner ()
void Run ()
void Quit ()
bool IsIdleForTesting ()

Checks whether there are any pending immediate tasks to run. Note that

delayed tasks don't count even if they are due to run.

void PostTask (std::function<void ()> )

TaskRunner implementation:

void PostDelayedTask (std::function<void ()> , uint32_t delay_ms)
void AddFileDescriptorWatch (PlatformHandle , std::function<void ()> )
void RemoveFileDescriptorWatch (PlatformHandle )
bool RunsTasksOnCurrentThread ()
void AdvanceTimeForTesting (uint32_t ms)

Pretends (for the purposes of running delayed tasks) that time advanced by

`ms`.

size_t slabs_allocated ()

Stats for testing.

Defined at line 82 of file ../../third_party/perfetto/include/perfetto/ext/base/lock_free_task_runner.h

size_t slabs_freed ()

Defined at line 85 of file ../../third_party/perfetto/include/perfetto/ext/base/lock_free_task_runner.h

Friends

class ScopedRefcount