Record guarded acquisitions against a fixed budget and report how it was spent.

Mutex Budget Coordination Report

mutex_budget_coordination_report.go
package main

import (
	"fmt"
	"sync"
)

func main() {
	var budget = 
	limit := 2
	var lock sync.Mutex
	acquired := 0
	rejected := 0
	for i := 0; i < budget; i++ {
		if acquired < limit {
			ok := lock.TryLock()
			if ok {
				acquired++
				lock.Unlock()
			}
		} else {
			rejected++
		}
	}
	var status string
	if acquired == 0 {
		status = "unused"
	} else if rejected > 0 {
		status = "capped"
	} else {
		status = "spent"
	}
	fmt.Printf("budget=%d acquired=%d rejected=%d %s\n", budget, acquired, rejected, status)
}
package main

import (
	"fmt"
	"sync"
)

func main() {
	var budget = 
	limit := 2
	var lock sync.Mutex
	acquired := 0
	rejected := 0
	for i := 0; i < budget; i++ {
		if acquired < limit {
			ok := lock.TryLock()
			if ok {
				acquired++
				lock.Unlock()
			}
		} else {
			rejected++
		}
	}
	var status string
	if acquired == 0 {
		status = "unused"
	} else if rejected > 0 {
		status = "capped"
	} else {
		status = "spent"
	}
	fmt.Printf("budget=%d acquired=%d rejected=%d %s\n", budget, acquired, rejected, status)
}
package main

import (
	"fmt"
	"sync"
)

func main() {
	var budget = 
	limit := 2
	var lock sync.Mutex
	acquired := 0
	rejected := 0
	for i := 0; i < budget; i++ {
		if acquired < limit {
			ok := lock.TryLock()
			if ok {
				acquired++
				lock.Unlock()
			}
		} else {
			rejected++
		}
	}
	var status string
	if acquired == 0 {
		status = "unused"
	} else if rejected > 0 {
		status = "capped"
	} else {
		status = "spent"
	}
	fmt.Printf("budget=%d acquired=%d rejected=%d %s\n", budget, acquired, rejected, status)
}
acquisition budget A coordination report can cap how many guarded sections run. Each iteration takes the lock with `sync.Mutex.TryLock` and releases it, but only while a fixed limit of acquisitions remains. The selected budget controls how many attempts are offered: the report stays unused when none are offered, reads spent when the budget fits the limit, and reads capped when extra attempts are rejected past the limit.