Embedding a mutex is a really bad idea. It exposes the Lock and Unlock methods on the enclosing type, which then allows code from outside your type to mess with your mutex.
There was no reason to embed the mutex in this example. The comment say it is idiomatic to do so, but that is untrue. Using a mutex called "mu" is idiomatic.
Now that we have a go.mod, we can properly upgrade to blackfriday/v2
The output remains the same, but this PR brings back italic links with '_',
placing them into the link since this seems to be the more proper way.
Fixes#182
This bugfix implements correct way to calculate source sha1 hash, before it will changed,
by propagation of unchanged sources.
This commit will also include regenerated static files and *.hash files.
Consistently use `time.Sleep`, instead of `runtime.Gosched`, to ensure all
goroutines can make progress. `Gosched` wasn't working in the playground
(ref #149).
Also stop trying to compare operation rates. This was tenuous given e.g. how
short the programs ran for, and with the `Sleep`s we now expect the rates to
be similar anyways.