5 ms·
> Alternatives exist. For example: message passing, and STM (software transactional memory). Anybody know of other alternatives? It should be noted that spinlo
by exDM69 12y ago
> Alternatives exist. For example: message passing, and STM (software transactional memory). Anybody know of other alternatives?
It should be noted that spinlocks, mutexes and conditions (and semaphores) are building blocks that are necessary to implement message passing, software transactional memory and other non-trivial parallel programming constructs. (at least until we have practical hardware transactional memory).
Spinlocks, mutexes and conditions are a "necessary evil", not "considered harmful".
- fpgeek 12y agoIf you're talking about building blocks, goto is also a necessary evil...
- xxs 12y agoYou will be surprised at the goto use in the linux kernel...
- tonysuper 12y agogoto is perfectly acceptable in C code. The most common use case is for cleaning up after errors before returning, although they're also used to break out of nested loops cleanly. goto is harmful when used improperly but fine everywhere else.
- xxs 12y agoI didn't mean it's a bad thing, it was a reply to some blanket statement.
- Dylan16807 12y agoI think you missed that fpgeek was turning exDM69's comment around on itself to put goto and spinlock into the same category. fpgeek wasn't actually making a statement about goto
- nocman 12y agoOh, nice turnaround! That one was funnier then the orignal pun. Nicely done. :D
- kragen 12y agoYou can implement message passing, STM, BSP, data parallelism, etc., on top of spinlocks, or on top of other implementations of mutexes such as condition variables, or on top of semaphores; but you can also implement them on top of primitives like compare-and-swap, which is arguably even harder to use correctly.