pavanky previously approved these changes Apr 13, 2018
Narrows the scope of the memory_mutex locks to just around the modification and reading of the internal memory data members and elements. This means that actual allocations happen outside of this mutex's lock. This was done because the CPU backend requires that the free operation performs a sync before the pointer is freed. This caused deadlocks when the main thread was waiting on the worker thread and the worker thread called nativeFree. This scenario happens when a buffer node is only referenced in the worker thread and it is removed.
umar456 deleted the sync_without_lock branch
May 13, 2018 09:36syurkevi pushed a commit to syurkevi/arrayfire that referenced this pull request
Jul 26, 2018…rrayfire#2124) Narrows the scope of the memory_mutex locks to just around the modification and reading of the internal memory data members and elements. This means that actual allocations happen outside of this mutex's lock. This was done because the CPU backend requires that the free operation performs a sync before the pointer is freed. This caused deadlocks when the main thread was waiting on the worker thread and the worker thread called nativeFree. This scenario happens when a buffer node is only referenced in the worker thread and it is removed.