# NullSharedMutex

<a id="nullsharedmutex"></a>

# NullSharedMutex

```cpp
#include <icy/signal.h>

struct NullSharedMutex
```

[Defined in src/base/include/icy/signal.h:30](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L30)

No-op mutex for single-threaded signal usage. When all signal operations occur on a single libuv event loop thread, the shared_mutex is unnecessary overhead.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`lock`](#lock) `inline` |  |
| `void` | [`unlock`](#unlock) `inline` |  |
| `void` | [`lock_shared`](#lock_shared) `inline` |  |
| `void` | [`unlock_shared`](#unlock_shared) `inline` |  |

---

<a id="lock"></a>

### lock

`inline`

```cpp
inline void lock()
```

[Defined in src/base/include/icy/signal.h:32](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L32)

---

<a id="unlock"></a>

### unlock

`inline`

```cpp
inline void unlock()
```

[Defined in src/base/include/icy/signal.h:33](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L33)

---

<a id="lock_shared"></a>

### lock_shared

`inline`

```cpp
inline void lock_shared()
```

[Defined in src/base/include/icy/signal.h:34](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L34)

---

<a id="unlock_shared"></a>

### unlock_shared

`inline`

```cpp
inline void unlock_shared()
```

[Defined in src/base/include/icy/signal.h:35](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L35)
