Changeset 16528


Ignore:
Timestamp:
05/31/13 14:26:29 (11 years ago)
Author:
tbretz
Message:
Made the list a class member to avoid accesses from outsize and confusion by the compiler with overwritten functions; added empty()
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/queue.h

    r16481 r16528  
    77
    88template<class T>
    9 class Queue : std::list<T>
     9class Queue
    1010{
     11    size_t fSize;                 // Only necessary for before C++11
     12
     13    std::list<T> fList;
     14
    1115    std::mutex fMutex;        // Mutex needed for the conditional
    1216    std::condition_variable fCond; // Conditional
     
    1923        kAbort,
    2024    };
    21 
    22     size_t fSize;                 // Only necessary for before C++11
    2325
    2426    state_t fState;               // Stop signal for the thread
     
    3537        while (1)
    3638        {
    37             while (std::list<T>::empty() && fState==kRun)
     39            while (fList.empty() && fState==kRun)
    3840                fCond.wait(lock);
    3941
     
    4143                break;
    4244
    43             if (fState==kStop && std::list<T>::empty())
     45            if (fState==kStop && fList.empty())
    4446                break;
    4547
    46             const T &val = std::list<T>::front();
     48            const T &val = fList.front();
    4749
    4850            // Theoretically, we can loose a signal here, but this is
     
    5557            lock.lock();
    5658
    57             std::list<T>::pop_front();
     59            fList.pop_front();
    5860            fSize--;
    5961        }
    6062
    61         std::list<T>::clear();
     63        fList.clear();
    6264        fSize = 0;
    6365
     
    134136            return false;
    135137
    136         std::list<T>::push_back(val);
     138        fList.push_back(val);
    137139        fSize++;
    138140
     
    150152            return false;
    151153
    152         std::list<T>::emplace_back(__args...);
     154        fList.emplace_back(__args...);
    153155        fSize++;
    154156
     
    166168        return fSize;
    167169    }
     170
     171    bool empty() const
     172    {
     173        return fSize==0;
     174    }
    168175};
    169176
Note: See TracChangeset for help on using the changeset viewer.