実際にやってしまったので戒めのためにメモしておきます。
DIコンテナで生成されるstructはシステムグローバルなシングルトンとして扱われ、2つ以上のリクエストをまたいで同じオブジェクトが参照される。つまり、DIコンテナの内部では2回目にstructを生成する時は、1回目に生成したstructをそのまま引き渡している。
もし、プロパティに「sync.Mutex」を持ったstructがDIコンテナによって生成され、同時に2つのプロセスがそのstructを参照すると、1つのsync.Mutexを共有して使ってしまうことになるので、片方のプロセスがMutex.Block()したまま処理を終了すると、もう片方のプロセスのMutex.Block()が永遠にBlockしたままになってしまう。
これは「sync.WaitGroup」でも同じ危険性がある。