📄 vtonce.c
字号:
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved. */#include "vthdr.h"/* Execute some set of actions exactly once**** Written by Kiem-Phong Vo*/#if __STD_Cint vtonce(Vtonce_t* once, void(*func)() )#elseint vtonce(once, func)Vtonce_t* once;void (*func)();#endif{#if !vt_threaded return -1;#else int rv; if(!func) { once->error = EINVAL; return -1; } if(once->done) return 0;#if _WIN32 if(InterlockedIncrement(&once->once) == 1) { (*func)(); once->done = 1; } else { once->once = 2; while(!once->done) Sleep(1); } rv = 0;#else if((rv = pthread_once(&once->once, func)) != 0) once->error = rv; else once->done = 1;#endif return rv ? -1 : 0;#endif /*vt_threaded*/}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -