Esempio n. 1
0
inline bool operator== (
        const google::protobuf::RepeatedField<T> & x,
        const google::protobuf::RepeatedField<T> & y)
{
    if (LOOM_UNLIKELY(x.size() != y.size())) {
        return false;
    }
    for (size_t i = 0, size = x.size(); i < size; ++i) {
        if (LOOM_UNLIKELY(x.Get(i) != y.Get(i))) {
            return false;
        }
    }
    return true;
}
Esempio n. 2
0
 Value & find_or_insert (Id id)
 {
     size_t pos = lower_bound(id);
     if (LOOM_UNLIKELY(pos == size() or index(pos) != id)) {
         index_.insert(index_.begin() + pos, id);
         values_.insert(values_.begin() + pos, Value());
     }
     return values_[pos];
 }
Esempio n. 3
0
 bool test ()
 {
     if (LOOM_UNLIKELY(not stale_count_) and LOOM_LIKELY(fresh_count_)) {
         stale_count_ = fresh_count_;
         fresh_count_ = 0;
         return true;
     } else {
         return false;
     }
 }
Esempio n. 4
0
 void unsafe_add_thread (
         size_t stage_number,
         const ThreadState & init_thread,
         const Fun & fun)
 {
     queue_.unsafe_add_consumer(stage_number);
     size_t init_position = queue_.unsafe_position();
     threads_.push_back(std::thread(
             [this, stage_number, init_thread, init_position, fun](){
         ThreadState thread = init_thread;
         size_t position = init_position;
         for (bool alive = true; LOOM_LIKELY(alive);) {
             queue_.consume(stage_number, position, [&](PipelineTask & task){
                 if (LOOM_UNLIKELY(task.exit)) {
                     alive = false;
                 } else {
                     fun(task.task, thread);
                 }
             });
             ++position;
         }
     }));
 }