Entrega de comida com Golang Magics
Mar 06 2023
.
func main() {
orders := make(chan Order)
drivers := make(chan Driver)
// start a Goroutine to handle incoming orders
go func() {
for {
order := receiveOrder()
orders <- order
}
}()
// start a Goroutine for each driver
for i := 0; i < numDrivers; i++ {
go func() {
for {
driver := receiveDriver()
drivers <- driver
// handle the next available order
order := <-orders
assignOrder(order, driver)
}
}()
}
}
type Order struct {
// order details
}
type Driver struct {
// driver details
}
func receiveOrder() Order {
// receive an order from an external system
}
func receiveDriver() Driver {
// receive a driver from an external system
}
func assignOrder(order Order, driver Driver) {
// assign the order to the driver
}
func main() {
orders := make(chan Order)
drivers := make(chan Driver)
// start a Goroutine to handle incoming orders
go func() {
for {
order := receiveOrder()
orders <- order
}
}()
// start a Goroutine for each driver
for i := 0; i < numDrivers; i++ {
go func() {
for {
driver := receiveDriver()
drivers <- driver
// handle the next available order
order := <-orders
assignOrder(order, driver)
}
}()
}
}
type Driver struct {
// driver details
mu sync.Mutex
busy bool
}
func assignOrder(order Order, driver Driver) {
driver.mu.Lock()
driver.busy = true
driver.mu.Unlock()
// handle the order
driver.mu.Lock()
driver.busy = false
driver.mu.Unlock()
}
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)