This media is not supported in your browser
VIEW IN TELEGRAM
Параллельные коллекции.
#dotNET #ConcurrentCollections #Multithreading #SystemCollections #ConcurrentStack #ConcurrentQueue #ConcurrentBag #ConcurrentDictionary #ParallelProgramming #ThreadSafety #PerformanceMatters #ProgrammingTips #Synchronization #DataStructures #LinkedLists #CodeOptimization #TechInsights #SoftwareDevelopment #ProgrammingKnowledge #MemoryEfficiency #ModernCoding
#dotNET #ConcurrentCollections #Multithreading #SystemCollections #ConcurrentStack #ConcurrentQueue #ConcurrentBag #ConcurrentDictionary #ParallelProgramming #ThreadSafety #PerformanceMatters #ProgrammingTips #Synchronization #DataStructures #LinkedLists #CodeOptimization #TechInsights #SoftwareDevelopment #ProgrammingKnowledge #MemoryEfficiency #ModernCoding
🔥
✅ Работает как связанный список связанных списков.
✅ Метод
✅ Параллельные пакеты идеальны, когда количество вызовов
🔍 Внутренняя кухня:
- Каждый поток имеет свой закрытый список.
- Извлечение происходит либо с "головы" своего списка, либо достигается "воровством" с "хвоста" другого.
📌 Важные моменты реализации:
- если поток добавляет элемент в свой закрытый список с числом элементов меньше двух, то накладывается блокировка на список, так как другой поток в это время может забирать данные текущего потока (stealing thread);
- если поток забирает элемент закрытого списка другого потока, то он забирает его не с "головы", а с "хвоста", то есть если в списке более двух элементов, то поток может заимствовать элемент без блокировки данного списка (в таком случае невозможно "состояние гонки", так как между добавляемым и забираемым элементом есть как минимум один промежуточный).
#ConcurrentBag #Multithreading #ParallelProgramming #ConcurrentCollections #LockFree #ThreadSafety #ProgrammingTips #DataStructures #Concurrency #ParallelQueue #ParallelStack #AddMethod #TakeMethod #ThreadStealing #RaceCondition #LinkedLists
ConcurrentBag
в действии!✅ Работает как связанный список связанных списков.
✅ Метод
Add
пакета не допускает почти никаких состязаний, когда вызывается многими потоками одновременно.✅ Параллельные пакеты идеальны, когда количество вызовов
Add
и Таке
сбалансировано в рамках потока.🔍 Внутренняя кухня:
- Каждый поток имеет свой закрытый список.
- Извлечение происходит либо с "головы" своего списка, либо достигается "воровством" с "хвоста" другого.
📌 Важные моменты реализации:
- если поток добавляет элемент в свой закрытый список с числом элементов меньше двух, то накладывается блокировка на список, так как другой поток в это время может забирать данные текущего потока (stealing thread);
- если поток забирает элемент закрытого списка другого потока, то он забирает его не с "головы", а с "хвоста", то есть если в списке более двух элементов, то поток может заимствовать элемент без блокировки данного списка (в таком случае невозможно "состояние гонки", так как между добавляемым и забираемым элементом есть как минимум один промежуточный).
#ConcurrentBag #Multithreading #ParallelProgramming #ConcurrentCollections #LockFree #ThreadSafety #ProgrammingTips #DataStructures #Concurrency #ParallelQueue #ParallelStack #AddMethod #TakeMethod #ThreadStealing #RaceCondition #LinkedLists
Media is too big
VIEW IN TELEGRAM
Параллельные коллекции. ConcurrentBag<T>.
Демонстрационный код программы: http://share.linqpad.net/36xbvm.linq
#ConcurrentBag #Multithreading #ParallelProgramming #ConcurrentCollections #LockFree #ThreadSafety #ProgrammingTips #DataStructures #Concurrency #ParallelQueue #ParallelStack #AddMethod #TakeMethod #ThreadStealing #RaceCondition #LinkedLists
Демонстрационный код программы: http://share.linqpad.net/36xbvm.linq
#ConcurrentBag #Multithreading #ParallelProgramming #ConcurrentCollections #LockFree #ThreadSafety #ProgrammingTips #DataStructures #Concurrency #ParallelQueue #ParallelStack #AddMethod #TakeMethod #ThreadStealing #RaceCondition #LinkedLists
Media is too big
VIEW IN TELEGRAM
МНОГОПОТОЧНАЯ ОБРАБОТКА
- Для чего нужен параллелизм?
- Безопасность к потокам в серверах приложений
#Многопоточность #Параллелизм #ThreadSafety #ServerProgramming #ConcurrentComputing #MultiThreading #ParallelProgramming #Coding #SoftwareEngineering #DeveloperLife #TechCommunity #CodeNewbie #BackendDevelopment #SystemArchitecture #PerformanceOptimization #Scalability #TechTalk #ProgrammingTips #SoftwareDevelopment #DevCommunity #TechInnovation #CodingForFuture #ProgrammerLife #TechWorld #ModernCoding #Efficiency #ServerSide
- Для чего нужен параллелизм?
- Безопасность к потокам в серверах приложений
#Многопоточность #Параллелизм #ThreadSafety #ServerProgramming #ConcurrentComputing #MultiThreading #ParallelProgramming #Coding #SoftwareEngineering #DeveloperLife #TechCommunity #CodeNewbie #BackendDevelopment #SystemArchitecture #PerformanceOptimization #Scalability #TechTalk #ProgrammingTips #SoftwareDevelopment #DevCommunity #TechInnovation #CodingForFuture #ProgrammerLife #TechWorld #ModernCoding #Efficiency #ServerSide