tbb::strict_ppl::internal::micro_queue_pop_finalizer< T > Class Template Reference

`#include <_concurrent_queue_impl.h>`

Inheritance diagram for tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >:
Collaboration diagram for tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >:

## Public Member Functions

| micro_queue_pop_finalizer (micro_queue< T > &queue, concurrent_queue_base_v3< T > &b, ticket k, page *p)
| ~micro_queue_pop_finalizer ()

## Private Types

typedef concurrent_queue_rep_base::page | page

## Private Attributes

ticket | my_ticket
micro_queue< T > & | my_queue
page * | my_page
concurrent_queue_page_allocator & | allocator

## Additional Inherited Members

Private Member Functions inherited from tbb::internal::no_copy
| no_copy (const no_copy &)=delete
| no_copy ()=default

## Detailed Description

### template<typename T>
class tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >

Definition at line 59 of file _concurrent_queue_impl.h.

## Member Typedef Documentation

## page

template<typename T>

typedef concurrent_queue_rep_base::page tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >::page

private

Definition at line 360 of file _concurrent_queue_impl.h.

## Constructor & Destructor Documentation

## micro_queue_pop_finalizer()

template<typename T>

tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >::micro_queue_pop_finalizer | ( | micro_queue< T > & | queue,
|  | concurrent_queue_base_v3< T > & | b,
|  | ticket | k,
|  | page * | p
| ) |  |

inline

Definition at line 366 of file _concurrent_queue_impl.h.

:
my_ticket(k), my_queue(queue), my_page(p), allocator(b)
{}

## ~micro_queue_pop_finalizer()

template<typename T >

tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >::~micro_queue_pop_finalizer | ( |  | ) |

Definition at line 373 of file _concurrent_queue_impl.h.

{
page* p = my_page;
if( is_valid_page(p) ) {
spin_mutex::scoped_lock lock( my_queue.page_mutex );
page* q = p->next;
my_queue.head_page = q;
if( !is_valid_page(q) ) {
my_queue.tail_page = NULL;
}
}
itt_store_word_with_release(my_queue.head_counter, my_ticket);
if( is_valid_page(p) ) {
allocator.deallocate_page( p );
}
}

References tbb::strict_ppl::internal::is_valid_page(), tbb::internal::itt_store_word_with_release(), lock, and p.

Here is the call graph for this function:

## Member Data Documentation

## allocator

template<typename T>

concurrent_queue_page_allocator& tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >::allocator

private

Definition at line 364 of file _concurrent_queue_impl.h.

## my_page

template<typename T>

page* tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >::my_page

private

Definition at line 363 of file _concurrent_queue_impl.h.

## my_queue

template<typename T>

micro_queue<T>& tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >::my_queue

private

Definition at line 362 of file _concurrent_queue_impl.h.

## my_ticket

template<typename T>

ticket tbb::strict_ppl::internal::micro_queue_pop_finalizer< T >::my_ticket

private

Definition at line 361 of file _concurrent_queue_impl.h.

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

- _concurrent_queue_impl.h

tbb::strict_ppl::internal::is_valid_page
bool is_valid_page(const concurrent_queue_rep_base::page *p)
Definition: _concurrent_queue_impl.h:102
tbb::internal::itt_store_word_with_release
void itt_store_word_with_release(tbb::atomic< T > &dst, U src)
Definition: tbb_profiling.h:157
tbb::strict_ppl::internal::micro_queue_pop_finalizer::allocator
concurrent_queue_page_allocator & allocator
Definition: _concurrent_queue_impl.h:364
tbb::spin_mutex::scoped_lock
friend class scoped_lock
Definition: spin_mutex.h:179
tbb::strict_ppl::internal::micro_queue_pop_finalizer::page
concurrent_queue_rep_base::page page
Definition: _concurrent_queue_impl.h:360
tbb::strict_ppl::internal::micro_queue_pop_finalizer::my_queue
micro_queue< T > & my_queue
Definition: _concurrent_queue_impl.h:362
lock
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void * lock
Definition: ittnotify_static.h:121
tbb::strict_ppl::internal::micro_queue_pop_finalizer::my_page
page * my_page
Definition: _concurrent_queue_impl.h:363
tbb::strict_ppl::internal::concurrent_queue_page_allocator::deallocate_page
virtual void deallocate_page(concurrent_queue_rep_base::page *p)=0
p
void const char const char int ITT_FORMAT __itt_group_sync p
Definition: ittnotify_static.h:91
tbb::strict_ppl::internal::micro_queue_pop_finalizer::my_ticket
ticket my_ticket
Definition: _concurrent_queue_impl.h:361

Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.