Channel protocol or mutexes?

Use crossbeam instead of std::mpsc. It's faster and more flexible in every aspect.

For logging, consider slog and tracing.