SPU: improve TSX usage

Reduce transaction failure amount
Remove vm::try_to_lock
This commit is contained in:
Nekotekina 2018-04-03 22:42:47 +03:00
parent d392379c7a
commit 2b5cf2455f
7 changed files with 361 additions and 221 deletions

View file

@ -100,6 +100,11 @@ public:
{
return (m_value.load() % c_one) != 0;
}
bool is_lockable() const
{
return m_value.load() >= c_min;
}
};
// Simplified shared (reader) lock implementation.

View file

@ -992,9 +992,10 @@ constexpr FORCE_INLINE error_code::not_an_error not_an_error(const T& value)
}
// Synchronization helper (cache-friendly busy waiting)
inline void busy_wait(std::size_t count = 100)
inline void busy_wait(std::size_t cycles = 3000)
{
while (count--) _mm_pause();
const u64 s = __rdtsc();
do _mm_pause(); while (__rdtsc() - s < cycles);
}
// Rotate helpers