[fpc-devel] LockFree Queue algorithm
Michael Schnell
mschnell at lumino.de
Wed Jan 30 08:51:31 CET 2008
> Any implementation of thread synchronization need care of cache.
> FUTEX, which rely on atomic primitives can't be faster than primitives
> alone.
I said that (using locking instructions to implement a semaphore) I
might implement something that works similar to FUTEX. I don't intend to
_use_ FUTEX.
>
> In lockfree algorithms we don't block data structures at all. In any
> time others threads can process data.
Of course that is what the software sees. But the use of the "lock"
instruction will stall this (and other) threads nonetheless. So we can
discuss what way is the most effective: IMHO that which uses the fewest
count of lock instructions in the pass when no blocking due to
concurrent access is necessary.
>
> You have to prevent data loss, when You have hazard with concurrent
> process see: http://en.wikipedia.org/wiki/Concurrency_control
> And when You block access do data, others thread stop.
The blocking due to concurrency will occur very seldom. So the
implementation of the program path that only checks for the need of
blocking and sets the semaphore (which needs to be done with the
appropriate bus-lock hardware support) but does not actually block is
the critical issue.
-Michael
More information about the fpc-devel
mailing list