来自N3220,§7.28.2.1“
call_once
函数”:
剧情简介
#include <threads.h> void call_once(once_flag *flag, void (*func)(void));
描述
函数使用call_once
由标志指向,以确保once_flag
被准确调用 一次,第一次使用该值调用func
函数call_once
。完成对flag
函数的有效调用 与call_once
函数的所有后续调用同步 flag 的值相同。call_once
退货
函数没有返回值。call_once
听起来,这是否应该用于只应该被调用一次的
init()
/config()
函数?或者我完全误解了它,它与线程有关?
这有什么用?
flag
是什么,它与这里有什么关系?
它保证了两件事:
call_once
调用一次。[1]call_once
仅在调用所提供的函数后才会返回。第二个保证意味着其他线程将阻塞,直到提供的函数返回(如果当前正在执行)。
这对于初始化/填充共享变量很有用。