คำถามติดแท็ก stdlist

3
รายการ :: empty () พฤติกรรมแบบมัลติเธรด?
ฉันมีรายการที่ฉันต้องการให้เธรดต่าง ๆ หยิบองค์ประกอบ เพื่อหลีกเลี่ยงการล็อก mutex ที่ป้องกันรายการเมื่อว่างฉันempty()จะตรวจสอบก่อนล็อก ไม่เป็นไรหากการโทรไปlist::empty()ไม่ถูกต้อง 100% ของเวลา ฉันเพียงต้องการหลีกเลี่ยงการหยุดทำงานหรือรบกวนการทำงานพร้อมกันlist::push()และการlist::pop()โทร ฉันปลอดภัยempty()ไหมที่จะสมมติว่า VC ++ และ Gnu GCC บางครั้งจะผิดพลาดและไม่มีอะไรเลวร้ายไปกว่านี้ if(list.empty() == false){ // unprotected by mutex, okay if incorrect sometimes mutex.lock(); if(list.empty() == false){ // check again while locked to be certain element = list.back(); list.pop_back(); } mutex.unlock(); }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.