在我所涉及到的一些重度多线程、多进程应用系统中,我看到人们会这样做。这似乎是在调试代码时使用的:
std::cerr << "DEBUG: Reaching: " << __FUNCTION__ << " @ " << __LINE__ << std::endl;
sleep(0);
如果我把 sleep(0); 宏定义为 ""(即将其更改为空),那么系统的调试输出似乎会以不同的顺序出现(不太可预测),因此我认为这使得该行代码更快地执行。但是,我认为 std::cerr 是无缓冲的,而且 std::endl 也会调用 std::flush(),所以这是为什么呢?