An open API service indexing awesome lists of open source software.

https://github.com/yudai/umutex

Golang Unblocking Mutex
https://github.com/yudai/umutex

Last synced: 8 months ago
JSON representation

Golang Unblocking Mutex

Awesome Lists containing this project

README

          

# Unblocking Mutex

This simple package provides unblocking mutexes for those who don't want to write many `select` clauses or get confused by numerous channels.

## Usage Example

```go
package main

import (
"fmt"
"github.com/yudai/umutex"
)

func main() {
// Create mutex
mutex := umutex.New()

// First time, try should succeed
if mutex.TryLock() {
fmt.Println("SUCCESS")
} else {
fmt.Println("FAILURE")
}

// Second time, try should fail as it's locked
if mutex.TryLock() {
fmt.Println("SUCCESS")
} else {
fmt.Println("FAILURE")
}

// Unclock mutex
mutex.Unlock()

// Third time, try should succeed again
if mutex.TryLock() {
fmt.Println("SUCCESS")
} else {
fmt.Println("FAILURE")
}
}
```

The output is;

```sh
SUCCESS
FAILURE
SUCCESS
```

`ForceLock()` method is also availale for normal blocking lock.