hpx/threading_base/thread_data_stackful.hpp

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace threads
class thread_data_stackful : public hpx::threads::thread_data
#include <thread_data_stackful.hpp>

A thread is the representation of a ParalleX thread. It’s a first class object in ParalleX. In our implementation this is a user level thread running on top of one of the OS threads spawned by the thread-manager.

A thread encapsulates:

  • A thread status word (see the functions thread::get_state and thread::set_state)

  • A function to execute (the thread function)

  • A frame (in this implementation this is a block of memory used as the threads stack)

  • A block of registers (not implemented yet)

Generally, threads are not created or executed directly. All functionality related to the management of threads is implemented by the thread-manager.

Public Functions

coroutine_type::result_type call(hpx::execution_base::this_thread::detail::agent_storage *agent_storage)
std::size_t get_thread_data() const
std::size_t set_thread_data(std::size_t data)
void init()
void rebind(thread_init_data &init_data)
thread_data_stackful(thread_init_data &init_data, void *queue, std::ptrdiff_t stacksize, thread_id_addref addref)
~thread_data_stackful()
void destroy()

Public Static Functions

thread_data *create(thread_init_data &init_data, void *queue, std::ptrdiff_t stacksize, thread_id_addref addref = thread_id_addref::yes)

Private Functions

thread_data *this_()

Private Members

coroutine_type coroutine_
execution_agent agent_

Private Static Attributes

util::internal_allocator<thread_data_stackful> thread_alloc_