- locks are an additional complexity
- very easy to get into a deadlock
Instead of protecting access to a resource with a lock, we can turn it
into a port/stream based concurrent service:
- the stream serializes all requests
- the requests are processed sequentially
- therefore each one has exclusive access to the resource
- no need for locks