Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ทำให้คอลเลกชันของคุณปลอดภัยสำหรับเธรดใน C #


.NET Framework 4 นำเนมสเปซ System.Collections.Concurrent มีคลาสคอลเล็กชันหลายคลาสที่เธรดปลอดภัยและสามารถปรับขนาดได้ คอลเล็กชันเหล่านี้เรียกว่าคอลเลกชั่นพร้อมกัน เนื่องจากสามารถเข้าถึงได้จากหลายเธรดพร้อมกัน

ประเภทคอลเลกชันที่เกิดขึ้นพร้อมกันต่อไปนี้ใช้กลไกการซิงโครไนซ์ที่มีน้ำหนักเบา:SpinLock, SpinWait เป็นต้น ซึ่งเป็นสิ่งใหม่ใน .NET Framework 4

ให้เราดูคอลเลกชันที่เกิดขึ้นพร้อมกันใน C# -

ประเภท คำอธิบาย
BlockingCollection การจำกัดและปิดกั้นการทำงานทุกประเภท
พจนานุกรมพร้อมกัน การใช้งานพจนานุกรมของคู่คีย์-ค่าอย่างปลอดภัยสำหรับเธรด
คิวพร้อมกัน การใช้งานคิว FIFO (เข้าก่อน ออกก่อน) ปลอดภัยสำหรับเธรด
ConcurrentStack การใช้งาน LIFO แบบปลอดภัยต่อเธรด (เข้าก่อน ออกก่อน)
กระเป๋าพร้อมกัน การใช้งานคอลเลกชันองค์ประกอบที่ไม่เรียงลำดับแบบปลอดภัยต่อเธรด
IProducerConsumerCollection อินเทอร์เฟซที่ประเภทต้องใช้เพื่อใช้ใน BlockingCollection

ให้เราดูวิธีการทำงานกับ ConcurrentStack ซึ่งเป็นคอลเล็กชันแบบเข้าก่อนออก (LIFO) แบบ thread-safe -

ConcurrentStack<int> cs = new ConcurrentStack<int>();
cs.Push(95);
cs.Push(120);
cs.Push(130);