void call_once(once_flag * flag,void(* func)(void)); (1) (自C11以来) typedef / *未指定* / once_flag (2) (自C11以来) #define ONCE_FLAG_INIT / *未指定* / (3) (自C11以来) 1)即使从多个线程调用,也只调用一次函数func。 函数func的完成与所有之前或之后对具有相同标志变量的call_once...
h> void do_once(void) { puts("called once"); } static once_flag flag = ONCE_FLAG_INIT; int func(void* data) { call_once(&flag, do_once); } int main(void) { thrd_t t1, t2, t3, t4; thrd_create(&t1, func, NULL); thrd_create(&t2, func, NULL); thrd_create(&t3, func...
在头文件<threads.h>中定义void call_once(once_flag * flag,void(* func)(void));(1)(自C11以来)typedef / *未指定* / once_flag(2)(自C11以来)#define ONCE_FLAG_INIT / *未指定* /(3)(自C11以来) 1)即使从多个线程调用,也只调用一次函数func。 函数func的完成与所有之前或之后对具有相...
#define ONCE_FLAG_INIT /* unspecified */ (3)(C11 起) 1)准确调用函数func一次,即使从多个线程调用。函数func的完成与先前或后继的用同一flag对象的对call_once调用同步。 2)足以保有call_once所用标志的完整对象类型。 3)展开成能用于初始化once_flag类型对象的值。
voidcall_once(once_flag*flag,void(*func)(void)); (1)(since C11) typedef/* unspecified */once_flag (2)(since C11) #define ONCE_FLAG_INIT /* unspecified */ (3)(since C11) 1)Calls functionfuncexactly once, even if invoked from several threads. The completion of the functionfuncsynchron...