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

คิวเป็นโครงสร้างข้อมูลที่เรียงลำดับก่อน - ออกก่อน การใช้งานคิวโดยทั่วไปจะสนับสนุนการผลักองค์ประกอบไปด้านหลังและทำให้พวกมันหลุดจากตำแหน่งด้านหน้า

24
คุณจะใช้งาน Stack และ Queue ใน JavaScript ได้อย่างไร
วิธีที่ดีที่สุดในการนำ Stack และ Queue ไปใช้ใน JavaScript คืออะไร? ฉันกำลังมองหาอัลกอริธึมการหลบหลีกและฉันต้องการโครงสร้างข้อมูลเหล่านี้


8
คิวที่ จำกัด ขนาดที่มีองค์ประกอบ N สุดท้ายใน Java
คำถามที่ง่ายและรวดเร็วมากเกี่ยวกับห้องสมุด Java: มีคลาสสำเร็จรูปที่ใช้งานQueueกับขนาดสูงสุดคงที่ - คือมันอนุญาตให้เพิ่มองค์ประกอบได้เสมอ แน่นอนว่ามันเป็นเรื่องเล็กน้อยที่จะใช้งานด้วยตนเอง: import java.util.LinkedList; public class LimitedQueue<E> extends LinkedList<E> { private int limit; public LimitedQueue(int limit) { this.limit = limit; } @Override public boolean add(E o) { super.add(o); while (size() > limit) { super.remove(); } return true; } } เท่าที่ฉันเห็นไม่มีมาตรฐานการใช้งานใน Java stdlibs แต่อาจมีหนึ่งใน Apache Commons หรืออะไรแบบนั้น
198 collections  queue  java 

7
Queue.Queue vs. collection.deque
ฉันต้องการคิวที่หลายเธรดสามารถใส่ข้อมูลและหลายกระทู้อาจอ่านได้ Python มีคลาสคิวอย่างน้อยสองคลาสคือ Queue.Queue และ collection.deque โดยที่ก่อนหน้านี้ดูเหมือนจะใช้หลังภายใน ทั้งสองอ้างว่าปลอดภัยต่อเธรดในเอกสารประกอบ อย่างไรก็ตามคิวเอกสารยังระบุ: collection.deque เป็นการใช้งานทางเลือกของคิวที่ไม่ได้ถูก จำกัด ด้วยการดำเนินการผนวกอะตอมอย่างรวดเร็ว () และ popleft () ที่ไม่ต้องการการล็อค ซึ่งฉันคิดว่าฉันไม่ได้พูดค่อนข้างไกล: นี่หมายความว่า deque ไม่ได้เป็นเธรดที่ปลอดภัยทั้งหมดหรือไม่? ถ้าเป็นฉันอาจไม่เข้าใจความแตกต่างระหว่างสองคลาสอย่างสมบูรณ์ ฉันเห็นว่าคิวเพิ่มฟังก์ชันการบล็อก ในทางกลับกันจะสูญเสียคุณสมบัติบางอย่างเช่นการสนับสนุนสำหรับผู้ประกอบการ การเข้าถึงวัตถุ deque ภายในโดยตรงคือ x ในคิว (). deque ด้ายปลอดภัย? นอกจากนี้เหตุใดคิวจึงใช้ mutex สำหรับการดำเนินการเมื่อ deque ปลอดภัยต่อเธรดแล้ว

11
ฉันจะล้าง std :: queue อย่างมีประสิทธิภาพได้อย่างไร
ฉันใช้ std :: queue สำหรับการใช้คลาส JobQueue (โดยทั่วไปคลาสนี้ดำเนินการแต่ละงานในลักษณะ FIFO) ในสถานการณ์สมมติหนึ่งฉันต้องการล้างคิวในนัดเดียว (ลบงานทั้งหมดออกจากคิว) ฉันไม่เห็นวิธีการที่ชัดเจนใด ๆ ที่มีอยู่ใน std :: queue class ฉันจะใช้วิธีการที่ชัดเจนสำหรับคลาส JobQueue ได้อย่างไร ฉันมีวิธีแก้ปัญหาง่ายๆอย่างหนึ่งในการวนรอบ แต่ฉันกำลังมองหาวิธีที่ดีกว่า //Clears the job queue void JobQueue ::clearJobs() { // I want to avoid pop in a loop while (!m_Queue.empty()) { m_Queue.pop(); } }
166 c++  stl  queue 

9
การสร้างคิวการบล็อค <T> ใน. NET?
ฉันมีสถานการณ์ที่ฉันมีหลายเธรดที่เพิ่มเข้ากับคิวและหลายเธรดที่อ่านจากคิวเดียวกัน หากคิวมาถึงขนาดเฉพาะเธรดทั้งหมดที่เติมคิวจะถูกบล็อกในการเพิ่มจนกว่ารายการจะถูกลบออกจากคิว วิธีแก้ปัญหาด้านล่างคือสิ่งที่ฉันใช้อยู่ตอนนี้และคำถามของฉันคือ: จะปรับปรุงได้อย่างไร มีวัตถุที่เปิดใช้งานลักษณะการทำงานนี้ใน BCL ที่ฉันควรใช้อยู่หรือไม่ internal class BlockingCollection&lt;T&gt; : CollectionBase, IEnumerable { //todo: might be worth changing this into a proper QUEUE private AutoResetEvent _FullEvent = new AutoResetEvent(false); internal T this[int i] { get { return (T) List[i]; } } private int _MaxSize; internal int MaxSize { get …

2
มัลติโพรเซสซิง - ไปป์เทียบกับคิว
อะไรคือความแตกต่างพื้นฐานระหว่างการรอคิวและท่อในแพคเกจ multiprocessing งูใหญ่ ? ในสถานการณ์ใดควรเลือกหนึ่งในอีกสถานการณ์หนึ่ง จะใช้Pipe()เมื่อไร? จะใช้Queue()เมื่อไร?

15
เรียกใช้งาน PHP แบบอะซิงโครนัส
ฉันทำงานกับเว็บแอปพลิเคชันที่ค่อนข้างใหญ่และแบ็กเอนด์ส่วนใหญ่เป็น PHP มีหลายที่ในรหัสที่ฉันต้องทำงานให้เสร็จ แต่ฉันไม่ต้องการให้ผู้ใช้รอผลลัพธ์ ตัวอย่างเช่นเมื่อสร้างบัญชีใหม่ฉันต้องส่งอีเมลต้อนรับให้พวกเขา แต่เมื่อพวกเขากดปุ่ม 'เสร็จสิ้นการลงทะเบียน' ฉันไม่ต้องการให้รอจนกว่าอีเมลจะถูกส่งจริงฉันแค่ต้องการเริ่มต้นกระบวนการและส่งข้อความกลับไปยังผู้ใช้ทันที จนถึงตอนนี้ในบางแห่งฉันใช้สิ่งที่รู้สึกเหมือนแฮ็คกับ exec () โดยทั่วไปการทำสิ่งต่าง ๆ เช่น: exec("doTask.php $arg1 $arg2 $arg3 &gt;/dev/null 2&gt;&amp;1 &amp;"); ซึ่งดูเหมือนจะใช้งานได้ แต่ฉันสงสัยว่ามีวิธีที่ดีกว่านี้หรือไม่ ฉันกำลังพิจารณาที่จะเขียนระบบที่จัดคิวงานในตาราง MySQL และสคริปต์ PHP ที่ใช้งานมานานแยกต่างหากซึ่งจะสืบค้นตารางนั้นหนึ่งวินาทีและดำเนินงานใหม่ ๆ ที่พบ สิ่งนี้จะมีประโยชน์ในการให้ฉันแบ่งงานระหว่างเครื่องจักรของคนงานหลายคนในอนาคตถ้าฉันต้องการ ฉันกำลังคิดค้นวงล้ออีกครั้งหรือไม่? มีวิธีแก้ปัญหาที่ดีกว่าแฮ็ค exec () หรือคิว MySQL หรือไม่?

8
ฉันจะสร้างอินสแตนซ์ของวัตถุคิวใน Java ได้อย่างไร
เมื่อฉันลอง: Queue&lt;Integer&gt; q = new Queue&lt;Integer&gt;(); คอมไพเลอร์ให้ข้อผิดพลาดแก่ฉัน ความช่วยเหลือใด ๆ นอกจากนี้หากฉันต้องการเริ่มต้นคิวฉันต้องใช้วิธีการของคิวหรือไม่

6
ฉันควรใช้คิวใดพร้อมกันใน Java
จาก JavaDocs: ConcurrentLinkedQueueเป็นทางเลือกที่เหมาะสมเมื่อหลายกระทู้จะแบ่งปันการเข้าถึงคอลเลกชันที่พบบ่อย คิวนี้ไม่อนุญาตองค์ประกอบ null ArrayBlockingQueueเป็น "บัฟเฟอร์ที่มีขอบเขต" แบบคลาสสิกซึ่งอาร์เรย์ที่มีขนาดคงที่จะเก็บองค์ประกอบที่ผู้ผลิตแทรกและสกัดโดยผู้บริโภค คลาสนี้สนับสนุนนโยบายความเป็นธรรมที่เป็นทางเลือกสำหรับการสั่งซื้อเธรดผู้ผลิตและผู้บริโภคที่รอคอย โดยทั่วไปLinkedBlockingQueueจะมีปริมาณงานที่สูงกว่าคิวที่ใช้อาร์เรย์ แต่ประสิทธิภาพที่คาดเดาได้น้อยกว่าในแอปพลิเคชันที่ทำงานพร้อมกันส่วนใหญ่ ฉันมี 2 สถานการณ์สถานการณ์หนึ่งต้องการคิวเพื่อสนับสนุนผู้ผลิตหลายราย (เธรดที่ใช้) กับผู้บริโภครายหนึ่งและอีกสถานการณ์หนึ่งเป็นอีกทางหนึ่ง ฉันไม่เข้าใจว่าจะใช้การนำไปใช้งานใด ใครสามารถอธิบายความแตกต่างคืออะไร? นอกจากนี้ 'นโยบายความเป็นธรรมทางเลือก' ArrayBlockingQueueคืออะไรใน?

11
ความแตกต่างพื้นฐานระหว่างสแต็กและคิวคืออะไร?
ความแตกต่างพื้นฐานระหว่าง stack กับ que คืออะไร ?? โปรดช่วยฉันด้วยฉันไม่พบความแตกต่าง วิธีการทำคุณความแตกต่างและสแต็คคิว? ฉันค้นหาคำตอบในลิงค์ต่างๆและพบคำตอบนี้ .. ในการเขียนโปรแกรมระดับสูง สแต็กถูกกำหนดให้เป็นรายการหรือลำดับขององค์ประกอบที่ยาวขึ้นโดยการวางองค์ประกอบใหม่ "ที่ด้านบน" ขององค์ประกอบที่มีอยู่และทำให้สั้นลงโดยการลบองค์ประกอบออกจากด้านบนขององค์ประกอบที่มีอยู่ เป็น ADT [ชนิดข้อมูลบทคัดย่อ] ที่มีการคำนวณทางคณิตศาสตร์เป็น "push" และ "pop" คิวคือลำดับขององค์ประกอบที่ถูกเพิ่มเข้าไปโดยการวางองค์ประกอบใหม่ไว้ที่ด้านหลังของที่มีอยู่และทำให้สั้นลงโดยการลบองค์ประกอบที่อยู่ด้านหน้าคิว มันเป็น ADT [ชนิดข้อมูลบทคัดย่อ] มีคำศัพท์เหล่านี้ที่เข้าใจมากขึ้นในการเขียนโปรแกรม Java, C ++, Python และอื่น ๆ ฉันขอคำตอบที่ละเอียดกว่านี้ได้ไหม โปรดช่วยฉันด้วย
130 stack  queue 

15
มีคิวขนาดคงที่ซึ่งจะลบองค์ประกอบที่มากเกินไปหรือไม่?
ฉันต้องการคิวที่มีขนาดคงที่ เมื่อฉันเพิ่มองค์ประกอบและคิวเต็มมันควรจะลบองค์ประกอบที่เก่าที่สุดโดยอัตโนมัติ มีการนำไปใช้งานสำหรับสิ่งนี้ใน Java หรือไม่?
128 java  queue 

14
คิวขนาดคงที่ซึ่ง dequeues ค่าเก่าโดยอัตโนมัติตาม enques ใหม่
ฉันใช้ConcurrentQueueสำหรับโครงสร้างข้อมูลที่ใช้ร่วมกันซึ่งมีจุดประสงค์เพื่อเก็บวัตถุ N สุดท้ายที่ส่งผ่านไปยังมัน (ชนิดของประวัติ) สมมติว่าเรามีเบราว์เซอร์และเราต้องการมี URL ที่เรียกดู 100 รายการล่าสุด ฉันต้องการคิวที่วาง (dequeue) รายการที่เก่าที่สุด (แรก) โดยอัตโนมัติเมื่อมีการแทรกรายการใหม่ (enqueue) เมื่อความจุเต็ม (100 ที่อยู่ในประวัติ) ฉันจะทำสิ่งนั้นให้สำเร็จได้System.Collectionsอย่างไร?
121 c#  queue  fifo 

5
LinkedBlockingQueue เทียบกับ ConcurrentLinkedQueue
คำถามของฉันเกี่ยวข้องกับคำถามนี้ที่ถามก่อนหน้านี้ ในสถานการณ์ที่ฉันใช้คิวในการสื่อสารระหว่างเธรดผู้ผลิตและผู้บริโภคคนทั่วไปจะแนะนำให้ใช้LinkedBlockingQueueหรือConcurrentLinkedQueue? ข้อดี / ข้อเสียของการใช้อย่างอื่นคืออะไร? ความแตกต่างหลักที่ฉันเห็นได้จากมุมมองของ API คือLinkedBlockingQueueสามารถกำหนดขอบเขตได้

8
อะไรคือความแตกต่างระหว่างวิธีการเพิ่มและข้อเสนอในคิวใน Java?
ใช้PriorityQueueตัวอย่างhttp://java.sun.com/j2se/1.5.0/docs/api/java/util/PriorityQueue.html#offer(E) ใครช่วยยกตัวอย่างหน่อยได้ไหมQueueว่าวิธีการaddและofferต่างกันอย่างไร ตามCollectionเอกสารaddวิธีนี้มักจะพยายามตรวจสอบให้แน่ใจว่ามีองค์ประกอบอยู่ภายในCollectionแทนที่จะเพิ่มรายการที่ซ้ำกัน คำถามของฉันคืออะไรคือความแตกต่างระหว่างaddและofferวิธีการ? มันเป็นว่าofferวิธีการจะเพิ่มรายการที่ซ้ำกันโดยไม่คำนึงถึง? (ฉันสงสัยว่าเป็นเพราะถ้าCollectionควรมีองค์ประกอบที่แตกต่างกันเท่านั้นสิ่งนี้จะหลีกเลี่ยงสิ่งนั้น) แก้ไข: ในและวิธีการเป็นวิธีการเดียวกัน (ดูคำตอบของฉันด้านล่าง) ใครช่วยยกตัวอย่างคลาสที่วิธีการและแตกต่างกันได้บ้างPriorityQueueaddofferaddoffer
110 java  queue  add 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.