forked from amir/filehasher
Small improvements of the LF MPMC queue Making the LF MPMC queue generic and in a seperate header file
30 lines
1.3 KiB
Plaintext
30 lines
1.3 KiB
Plaintext
V1.0: Recursive scan
|
|
|
|
v1.1: Collects more metadata
|
|
|
|
v2.0: Multi threaded scan
|
|
|
|
v2.1: Uses AVX2 instead of SSE2
|
|
|
|
v3.0: Simple mutex/critical section based MPMC queue
|
|
|
|
v3.1: Lock free MPMC queue Vyukov-style
|
|
|
|
v3.2: Making the lock free MPMC queue growable
|
|
Add padding to avoir false sharing
|
|
Add sleep() and SwitchToThread() to limit spinning
|
|
|
|
v3.3: Fix bug slots used before initialization,compare and swap is protecting updating committed, but it is not protecting the memory initialization. Adding atomic_flag commit_lock to protect against that
|
|
Fix bug multiple threads committing at the same time, fixed by using atomic_flag commit_lock and re-checking committed after acquiring the lock
|
|
Reorder helper functions
|
|
|
|
v3.4: Rewriting hash_worker() to export file_hashes.txt
|
|
|
|
3.5: Instead of writing directly to file_hashes.txt, hash_workers now are using a local arena, writing everything once at the end
|
|
Using #pragma once to ensure that a given header file is included only once in a single compilation unit
|
|
Forcing xxhash to use the stack instead of the heap
|
|
Making the hashing buffer reusable instead of malloc every file
|
|
Implementing a general purpose arena to replace small allocations
|
|
Small improvements of the LF MPMC queue
|
|
Making the LF MPMC queue generic and in a seperate header file
|