std::call_once多线程并发调用:未完成时后续调用行为问询
std::call_once的线程等待行为说明
当你使用std::call_once确保一段代码仅执行一次时,如果首个线程的目标代码尚未执行完成,其他线程调用std::call_once会等待首个线程执行完成后才返回,这个行为完全符合C++标准。
C++标准明确规定,std::call_once会对所有调用它的线程进行同步:只要有一个线程正在执行传入的可调用对象,其余线程必须等待该执行完成,之后这些线程会直接返回,不会再触发目标代码的执行。
你测试得到的结果是符合标准规范的,并非测试特例。
内容的提问来源于stack exchange,提问作者CmedCmbadi
相关产品推荐
相关产品推荐

