{"repo":"vladopajic/go-actor","free":true,"listed":false,"github":"https://github.com/vladopajic/go-actor","clone":"git clone https://github.com/vladopajic/go-actor.git","description":"A lightweight library for writing concurrent programs in Go using the Actor model.","language":"Go","stars":307,"topics":["actor","go-actor","concurrency","concurrent-programming","go","golang","communicating-sequential-processes","csp","goroutines","goroutine"],"license":"MIT","category":"dev-tools","readme_excerpt":"go-actor go-actor is a lightweight library for writing concurrent programs in Go using the Actor model. Motivation Without reusable design principles, maintaining a complex codebase can be challenging, as developers implement logic differently when no common practice is defined. go-actor aims to provide a pattern for building highly efficient programs, giving developers a straightforward approach to designing components, the building blocks of programs, using a pattern based on the Actor Model and Communicating Sequential Processes (CSP) . Advantage - Unified Design Principles : Model the entire codebase using the same principles, where each actor is a fundamental building block. - Natural Fit with Go : Leverage Go's goroutines and channels, which directly translate to actors and mailboxes. - Avoid Mutexes : Design systems without the need for mutexes, reducing the potential for deadlocks and improving performance in complex components. - Optimal Scheduling : Enhance performance by optimizing for Go's goroutine scheduler. - Easy Transition : Legacy codebases can transition to an actor-based design due to the simple interfaces provided by go-actor, allowing for seamless integration. - Zero Overhead : Ensure optimal performance in highly concurrent environments. Abstractions The core abstraction layer of go-actor consists of three primary interfaces: - actor.Actor : Represents any entity that implements the Start() and Stop() methods. Actors created using the actor.New(actor.Wo","default_branch":null,"files":null,"tree":[],"storefront":"/r/vladopajic","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/vladopajic/go-actor/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}