lundi 17 juin 2019

Why queue.front() return false data

Front after push don't work correctly

void qpush(char * src)
  {
        unique_lock<mutex> lock(mtx);
        not_full.wait(lock, [this]() {return _data.size() < maxsize;});
        _data.emplace(src);
    cout<<"data is qpush is : "<<string(src)<<endl;
    const char  * dst=move(_data.front());
    cout<<"data after qpush is : "<<string(dst)<<"\n"<<endl;
        lock.unlock();
        not_empty.notify_one();
    }


   char * qget()
  {
    unique_lock<mutex> lock(mtx);
    char *dst=move(_data.front());
    cout<<"data in qget is : "<<dst<<endl;
    lock.unlock();
    not_empty.notify_one();
    return dst;
  }

data is qpush is :This is a data ready to be sent to Channel
data after qpush is : is is a data ready to be sent to Channel

Aucun commentaire:

Enregistrer un commentaire