https://stackoverflow.com/questions/49591611/c-multithreading-channels-with-condition-variables
https://st.xorian.net/blog/2012/08/go-style-channel-in-c/
https://gist.github.com/vmrob/e4fde208302ae8979b57
https://github.com/ahorn/cpp-channel
https://www.jianshu.com/p/c1dfa1d40f53
https://www.zhihu.com/question/24116967