c++20新功能—std::osyncstream在学习多线程编程时,如果使用std::cout进行输出的话,往往发现可能打印的数据会串了行,甚至会出现这个线程的输出结果和另外一个线程的输出结果混在一起了。特别是在实际的应用中,一些多线程中的日志往往更容易出现这种现象,导致开发者得去拆这些日志。 这种现象的原因在操作符“<<”在多线程环境下是安全的(或者说原子的)但往往一个std::cout后面会跟多个“<<”,而这个标准就不保障是原子的了。而线程调用器往往又是随机的,所以就会出现上面的那些情况。