6 #ifndef INCLUDED_ILM_THREAD_PROCESS_GROUP_H 
    7 #define INCLUDED_ILM_THREAD_PROCESS_GROUP_H 
   28 #include <type_traits> 
   36         std::is_same <decltype (
P {}.next), 
P *>::
value, 
bool> = 
true>
 
   44         , _avail_head (nullptr)
 
   45         , _first_failure (nullptr)
 
   47         _fixed_pool.resize (numThreads);
 
   48         for ( 
unsigned int i = 0; i < numThreads; ++i )
 
   50             if (i == (numThreads - 1))
 
   51                 _fixed_pool[i].next = 
nullptr;
 
   53                 _fixed_pool[i].next = &(_fixed_pool[i+1]);
 
   55         _avail_head = &(_fixed_pool[0]);
 
   64         std::string *cur = _first_failure.load ();
 
   70         Process* oldhead = _avail_head.load (std::memory_order_relaxed);
 
   75         } 
while (!_avail_head.compare_exchange_weak (
 
   77                      std::memory_order_release,
 
   78                      std::memory_order_relaxed));
 
   98         ret = _avail_head.load (std::memory_order_acquire);
 
  104                 std::cerr << 
"GACK: serious failure case???" << std::endl;
 
  107         } 
while ( !_avail_head.compare_exchange_weak(
 
  108                       ret, newhead, std::memory_order_acquire));
 
  119         std::string *cur = _first_failure.load ();
 
  122             std::string *msg = 
new std::string (e);
 
  123             if (! _first_failure.compare_exchange_strong (cur, msg))
 
  130         std::string *cur = _first_failure.load ();
 
  131         _first_failure.store (
nullptr);
 
  135             std::string msg (*cur);
 
  144     std::vector<Process>   _fixed_pool;
 
  146     std::atomic<Process *> _avail_head;
 
  148     std::atomic<std::string *> _first_failure;
 
  154 #endif // INCLUDED_ILM_THREAD_POOL_H 
typename std::enable_if< B, T >::type enable_if_t
Define Imath::enable_if_t to be std for C++14, equivalent for C++11. 
 
GLsizei const GLfloat * value
 
#define ILMTHREAD_INTERNAL_NAMESPACE_HEADER_ENTER
 
#define ILMTHREAD_INTERNAL_NAMESPACE_HEADER_EXIT
 
void record_failure(const char *e)
 
ProcessGroup(unsigned int numThreads)
 
LeafData & operator=(const LeafData &)=delete