4 ms·
Ask HN: Is there a way to systematically approach concurrent designs?
I'm finding with concurrent designs I'm never really sure I'm not missing some special case or race condition.
Has anyone come across a systematic way to approach the problem and say "Yes this design will have no concurrency issues"
For example: "If you check off this checklist of items you know your design will work"
- verdverm 8y agoNot really, concurrency is a hard verification problem. It depends on the system which the concurrency is built. Is it a single program or cloud based? what language, libraries, tech? There will be tools to help depending on the setup. There are also paradigms like Communication Sequential Processes that can make things easier to reason about. (i.e. CSP vs shared-memory)
- itamarst 8y agoFormal methods can let you run your design through a checker that will prove it's correct. Hillel Wayne has blog posts, talks, and a book (https://www.apress.com/us/book/9781484238288 https://www.apress.com/us/book/9781484238288) about this: https://www.hillelwayne.com/ https://www.hillelwayne.com/ Some services at AWS have been designed this way: https://lamport.azurewebsites.net/tla/formal-methods-amazon.pdf https://lamport.azurewebsites.net/tla/formal-methods-amazon....