List of Argobots wrapper classesΒΆ

Thallium class Argobot type
barrier ABT_barrier
condition_variable ABT_cond
eventual ABT_eventual
future ABT_future
mutex ABT_mutex
pool ABT_pool
recursive_mutex ABT_mutex
rwlock ABT_rwlock
scheduler ABT_sched
task ABT_task
thread ABT_thread
timer ABT_timer
xstream ABT_xstream
xstream_barrier ABT_xstream_barrier

The following class are resource-managed (that is, they create a valid internal Argobot handle when their constructor is called, destroy it when their destructor is called, they are non-copy-constructible, non-copy-assignable, but they are move-constructible and move-assignable): barrier, condition_variable, eventual, future, mutex, recursive_mutex, rwlock, timer, xstream_barrier.

The following classes are only wrappers to Argobots resources but do not destroy them when their destructor is called: pool, scheduler, task, thread, xstream. To manage the resource inside these classes, you need to use the managed<T> template class (e.g. managed<thread>). Managed resources are created using the create() factory functions in their respective classes, or the make_thread and make_task functions of the pool and xstream classes for managed<thread> and managed<task>.


An issue with Argobots currently makes managed<pool> and managed<scheduler> not behave correctly. Their internal resource will be freed automatically if they are default pools or default schedulers. If they are custom pools and schedulers they will not be freed at all.