Producer–Consumer using BlockingCollection?
Short answer: BlockingCollection<int> queue = new BlockingCollection<int>(); Task.Run(() => { for(int i = 1; i <= 5; i++) { queue.Add(i); } queue.CompleteAdding(); }); Task.Run(() => { foreach(var item in queue.GetConsumingEnumerable()) { Console.WriteLine("Consumed " + item); } }); Provides automatic thread synchronization and prevents race conditions.
Example code
BlockingCollection<int> queue = new BlockingCollection<int>(); Task.Run(() => {
for(int i = 1; i <= 5; i++)
{ queue.Add(i); } queue.CompleteAdding(); }); Task.Run(() => {
foreach(var item in queue.GetConsumingEnumerable())
{ Console.WriteLine("Consumed " + item); } }); Provides automatic thread synchronization and prevents race conditions.
Real-world example (ShopNest)
Answer with: definition → one ShopNest-style story → trade-off → how you would verify it in production.
Say this in the interview
- Define — one clear sentence (the short answer above).
- Example — relate it to a project like ShopNest or your real work.
- Trade-off — when you would not use it.
Share this Q&A
Share preview image: https://www.toolliyo.com/images/toolliyo-logo.png