GLA Summit 2022/Value at the Fringe: Solutions to Aysnchronous Edge Cases

From LabVIEW Wiki
Jump to: navigation, search

Value at the Fringe: Solutions to Aysnchronous Edge Cases by Ethan Stern

The seemingly simple edge cases often bedevil us the most, bringing complexity, race conditions, and that unsavory sensation we might dub "designer's remorse." I submit that even the most elegant application needs to share *some* data between asynchronous processes and that this predicament is a main driver of complexity in otherwise well-designed software. As LabVIEW developers or architects, we know what NOT to use (globals, yuck!) and often reach right into our standard toolkit of complexity-shifting design patterns. Having spent an unhealthy amount of time pondering and tinkering with this problem, I propose an alternative: share and mutate these special data safely, free of race conditions, using graphical syntax that looks exactly like the deterministic, readable, dataflow that all professional LabVIEW developers know and love. In this presentation I will provide the solution and some rationale that helped me get there. The concepts come (almost) straight from Clojure, a first-class functional programming language; they just required some thought and a good deal of elbow grease to bring to LabVIEW. Introducing: the LabVIEW Atom!

Presentation Links

See Also

External Links