Browse Source
Make ThreadSafeObjectPool actually thread safe (#8106)
* Make ThreadSafeObjectPool actually thread safe
pull/8112/head
Nikita Tsukanov
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
1 additions and
2 deletions
-
src/Avalonia.Base/Threading/ThreadSafeObjectPool.cs
|
|
|
@ -5,12 +5,11 @@ namespace Avalonia.Threading |
|
|
|
public class ThreadSafeObjectPool<T> where T : class, new() |
|
|
|
{ |
|
|
|
private Stack<T> _stack = new Stack<T>(); |
|
|
|
private object _lock = new object(); |
|
|
|
public static ThreadSafeObjectPool<T> Default { get; } = new ThreadSafeObjectPool<T>(); |
|
|
|
|
|
|
|
public T Get() |
|
|
|
{ |
|
|
|
lock (_lock) |
|
|
|
lock (_stack) |
|
|
|
{ |
|
|
|
if(_stack.Count == 0) |
|
|
|
return new T(); |
|
|
|
|