亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lock.h

?? 磁盤管理工具,主要管理光盤信息和內容希望大家喜歡
?? H
?? 第 1 頁 / 共 3 頁
字號:
# define gl_rwlock_rdlock(NAME) \    if (thread_in_use () && rw_rdlock (&NAME) != 0) abort ()# define gl_rwlock_wrlock(NAME) \    if (thread_in_use () && rw_wrlock (&NAME) != 0) abort ()# define gl_rwlock_unlock(NAME) \    if (thread_in_use () && rw_unlock (&NAME) != 0) abort ()# define gl_rwlock_destroy(NAME) \    if (thread_in_use () && rwlock_destroy (&NAME) != 0) abort ()/* --------------------- gl_recursive_lock_t datatype --------------------- *//* Old Solaris threads did not have recursive locks.   We have to implement them ourselves.  */typedef struct        {          mutex_t mutex;          thread_t owner;          unsigned long depth;        }        gl_recursive_lock_t;# define gl_recursive_lock_define(STORAGECLASS, NAME) \    STORAGECLASS gl_recursive_lock_t NAME;# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \    STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;# define gl_recursive_lock_initializer \    { DEFAULTMUTEX, (thread_t) 0, 0 }# define gl_recursive_lock_init(NAME) \    if (thread_in_use ()) glthread_recursive_lock_init (&NAME)# define gl_recursive_lock_lock(NAME) \    if (thread_in_use ()) glthread_recursive_lock_lock (&NAME)# define gl_recursive_lock_unlock(NAME) \    if (thread_in_use ()) glthread_recursive_lock_unlock (&NAME)# define gl_recursive_lock_destroy(NAME) \    if (thread_in_use ()) glthread_recursive_lock_destroy (&NAME)extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock);extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock);extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock);extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock);/* -------------------------- gl_once_t datatype -------------------------- */typedef struct        {          volatile int inited;          mutex_t mutex;        }        gl_once_t;# define gl_once_define(STORAGECLASS, NAME) \    STORAGECLASS gl_once_t NAME = { 0, DEFAULTMUTEX };# define gl_once(NAME, INITFUNCTION) \    do                                                \      {                                               \        if (thread_in_use ())                         \          {                                           \            glthread_once (&NAME, INITFUNCTION);      \          }                                           \        else                                          \          {                                           \            if (glthread_once_singlethreaded (&NAME)) \              INITFUNCTION ();                        \          }                                           \      }                                               \    while (0)extern void glthread_once (gl_once_t *once_control, void (*initfunction) (void));extern int glthread_once_singlethreaded (gl_once_t *once_control);# ifdef __cplusplus}# endif#endif/* ========================================================================= */#if USE_WIN32_THREADS# include <windows.h># ifdef __cplusplusextern "C" {# endif/* We can use CRITICAL_SECTION directly, rather than the Win32 Event, Mutex,   Semaphore types, because     - we need only to synchronize inside a single process (address space),       not inter-process locking,     - we don't need to support trylock operations.  (TryEnterCriticalSection       does not work on Windows 95/98/ME.  Packages that need trylock usually       define their own mutex type.)  *//* There is no way to statically initialize a CRITICAL_SECTION.  It needs   to be done lazily, once only.  For this we need spinlocks.  */typedef struct { volatile int done; volatile long started; } gl_spinlock_t;/* -------------------------- gl_lock_t datatype -------------------------- */typedef struct        {          gl_spinlock_t guard; /* protects the initialization */          CRITICAL_SECTION lock;        }        gl_lock_t;# define gl_lock_define(STORAGECLASS, NAME) \    STORAGECLASS gl_lock_t NAME;# define gl_lock_define_initialized(STORAGECLASS, NAME) \    STORAGECLASS gl_lock_t NAME = gl_lock_initializer;# define gl_lock_initializer \    { { 0, -1 } }# define gl_lock_init(NAME) \    glthread_lock_init (&NAME)# define gl_lock_lock(NAME) \    glthread_lock_lock (&NAME)# define gl_lock_unlock(NAME) \    glthread_lock_unlock (&NAME)# define gl_lock_destroy(NAME) \    glthread_lock_destroy (&NAME)extern void glthread_lock_init (gl_lock_t *lock);extern void glthread_lock_lock (gl_lock_t *lock);extern void glthread_lock_unlock (gl_lock_t *lock);extern void glthread_lock_destroy (gl_lock_t *lock);/* ------------------------- gl_rwlock_t datatype ------------------------- *//* It is impossible to implement read-write locks using plain locks, without   introducing an extra thread dedicated to managing read-write locks.   Therefore here we need to use the low-level Event type.  */typedef struct        {          HANDLE *array; /* array of waiting threads, each represented by an event */          unsigned int count; /* number of waiting threads */          unsigned int alloc; /* length of allocated array */          unsigned int offset; /* index of first waiting thread in array */        }        gl_waitqueue_t;typedef struct        {          gl_spinlock_t guard; /* protects the initialization */          CRITICAL_SECTION lock; /* protects the remaining fields */          gl_waitqueue_t waiting_readers; /* waiting readers */          gl_waitqueue_t waiting_writers; /* waiting writers */          int runcount; /* number of readers running, or -1 when a writer runs */        }        gl_rwlock_t;# define gl_rwlock_define(STORAGECLASS, NAME) \    STORAGECLASS gl_rwlock_t NAME;# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \    STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;# define gl_rwlock_initializer \    { { 0, -1 } }# define gl_rwlock_init(NAME) \    glthread_rwlock_init (&NAME)# define gl_rwlock_rdlock(NAME) \    glthread_rwlock_rdlock (&NAME)# define gl_rwlock_wrlock(NAME) \    glthread_rwlock_wrlock (&NAME)# define gl_rwlock_unlock(NAME) \    glthread_rwlock_unlock (&NAME)# define gl_rwlock_destroy(NAME) \    glthread_rwlock_destroy (&NAME)extern void glthread_rwlock_init (gl_rwlock_t *lock);extern void glthread_rwlock_rdlock (gl_rwlock_t *lock);extern void glthread_rwlock_wrlock (gl_rwlock_t *lock);extern void glthread_rwlock_unlock (gl_rwlock_t *lock);extern void glthread_rwlock_destroy (gl_rwlock_t *lock);/* --------------------- gl_recursive_lock_t datatype --------------------- *//* The Win32 documentation says that CRITICAL_SECTION already implements a   recursive lock.  But we need not rely on it: It's easy to implement a   recursive lock without this assumption.  */typedef struct        {          gl_spinlock_t guard; /* protects the initialization */          DWORD owner;          unsigned long depth;          CRITICAL_SECTION lock;        }        gl_recursive_lock_t;# define gl_recursive_lock_define(STORAGECLASS, NAME) \    STORAGECLASS gl_recursive_lock_t NAME;# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \    STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;# define gl_recursive_lock_initializer \    { { 0, -1 }, 0, 0 }# define gl_recursive_lock_init(NAME) \    glthread_recursive_lock_init (&NAME)# define gl_recursive_lock_lock(NAME) \    glthread_recursive_lock_lock (&NAME)# define gl_recursive_lock_unlock(NAME) \    glthread_recursive_lock_unlock (&NAME)# define gl_recursive_lock_destroy(NAME) \    glthread_recursive_lock_destroy (&NAME)extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock);extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock);extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock);extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock);/* -------------------------- gl_once_t datatype -------------------------- */typedef struct        {          volatile int inited;          volatile long started;          CRITICAL_SECTION lock;        }        gl_once_t;# define gl_once_define(STORAGECLASS, NAME) \    STORAGECLASS gl_once_t NAME = { -1, -1 };# define gl_once(NAME, INITFUNCTION) \    glthread_once (&NAME, INITFUNCTION)extern void glthread_once (gl_once_t *once_control, void (*initfunction) (void));# ifdef __cplusplus}# endif#endif/* ========================================================================= */#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WIN32_THREADS)/* Provide dummy implementation if threads are not supported.  *//* -------------------------- gl_lock_t datatype -------------------------- */typedef int gl_lock_t;# define gl_lock_define(STORAGECLASS, NAME)# define gl_lock_define_initialized(STORAGECLASS, NAME)# define gl_lock_init(NAME)# define gl_lock_lock(NAME)# define gl_lock_unlock(NAME)/* ------------------------- gl_rwlock_t datatype ------------------------- */typedef int gl_rwlock_t;# define gl_rwlock_define(STORAGECLASS, NAME)# define gl_rwlock_define_initialized(STORAGECLASS, NAME)# define gl_rwlock_init(NAME)# define gl_rwlock_rdlock(NAME)# define gl_rwlock_wrlock(NAME)# define gl_rwlock_unlock(NAME)/* --------------------- gl_recursive_lock_t datatype --------------------- */typedef int gl_recursive_lock_t;# define gl_recursive_lock_define(STORAGECLASS, NAME)# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME)# define gl_recursive_lock_init(NAME)# define gl_recursive_lock_lock(NAME)# define gl_recursive_lock_unlock(NAME)/* -------------------------- gl_once_t datatype -------------------------- */typedef int gl_once_t;# define gl_once_define(STORAGECLASS, NAME) \    STORAGECLASS gl_once_t NAME = 0;# define gl_once(NAME, INITFUNCTION) \    do                       \      {                      \        if (NAME == 0)       \          {                  \            NAME = ~ 0;      \            INITFUNCTION (); \          }                  \      }                      \    while (0)#endif/* ========================================================================= */#endif /* _LOCK_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久福利软件| 成人性生交大片免费| 亚洲视频电影在线| 日本一区二区三区四区在线视频| 久久久久久久综合日本| 久久青草国产手机看片福利盒子 | 国产传媒一区在线| 国产.欧美.日韩| www.成人网.com| 日本道精品一区二区三区| 欧美三级一区二区| 欧美一级艳片视频免费观看| 日韩欧美国产麻豆| 中文字幕欧美激情一区| 亚洲精品美腿丝袜| 日本欧美久久久久免费播放网| 久久国产乱子精品免费女| 国产美女精品在线| 色综合视频在线观看| 精品视频在线免费| 久久一区二区视频| 亚洲欧洲国产日本综合| 亚洲午夜精品一区二区三区他趣| 亚洲国产精品一区二区久久恐怖片| 亚洲成av人综合在线观看| 久久91精品国产91久久小草| 丁香网亚洲国际| 欧美福利一区二区| 国产视频一区二区在线| 亚洲激情自拍偷拍| 蜜臀精品久久久久久蜜臀| 成人在线一区二区三区| 色婷婷av一区二区三区软件| 日韩欧美另类在线| 亚洲美女视频在线| 激情综合色综合久久综合| 99精品国产视频| 欧美电影免费观看高清完整版在线 | 午夜精品福利一区二区三区av| 久久99国产精品免费| 日本道色综合久久| 久久久国产综合精品女国产盗摄| 亚洲精品日日夜夜| 成人黄色小视频| 日韩欧美国产三级| 午夜成人免费视频| 91一区二区在线| 久久免费午夜影院| 全部av―极品视觉盛宴亚洲| 成人免费视频免费观看| 日韩一级欧美一级| 亚洲国产综合色| 97国产一区二区| 久久久久久久久久电影| 另类小说欧美激情| 777亚洲妇女| 香蕉久久夜色精品国产使用方法| 国产精品12区| 国产午夜亚洲精品羞羞网站| 在线观看国产一区二区| 日本不卡视频一二三区| 欧美日韩情趣电影| 国产成人精品www牛牛影视| 欧美日韩国产大片| 一区二区三区在线视频观看| 成人短视频下载| 久久久精品tv| 国产成人午夜精品影院观看视频 | 久久综合九色综合欧美就去吻| 午夜精品影院在线观看| 欧洲另类一二三四区| 亚洲日本在线天堂| 99视频在线观看一区三区| 国产精品色婷婷| av电影天堂一区二区在线| 国产精品美女久久久久高潮| 国产成人亚洲综合a∨婷婷 | 亚洲激情图片小说视频| 色综合久久天天综合网| 国产精品不卡视频| 91麻豆国产在线观看| 亚洲欧美日韩国产中文在线| 成人免费的视频| 国产精品久久久久久妇女6080| av成人老司机| 亚洲综合另类小说| 欧美日韩精品一区二区在线播放| 亚洲成人av在线电影| 日韩欧美视频在线| 成人免费电影视频| 亚洲国产一二三| 日韩欧美国产精品一区| 美腿丝袜一区二区三区| 亚洲视频免费看| 欧美视频在线一区二区三区| 亚洲欧美综合另类在线卡通| 91在线观看视频| 亚洲va韩国va欧美va| 国产乱国产乱300精品| 91丨porny丨在线| 国产日韩影视精品| 五月天一区二区三区| 91精品国产综合久久久久久 | 色婷婷av一区二区三区软件 | jlzzjlzz亚洲日本少妇| 国产精品国产三级国产有无不卡 | 久久精品在这里| 在线亚洲人成电影网站色www| 亚洲v日本v欧美v久久精品| 久久亚洲精精品中文字幕早川悠里 | 麻豆精品久久精品色综合| 日本一区二区在线不卡| 欧美卡1卡2卡| 99精品一区二区三区| 日韩高清不卡一区| 国产精品国产馆在线真实露脸| 91精品一区二区三区久久久久久| 成人午夜电影小说| 天堂蜜桃91精品| 最好看的中文字幕久久| 日韩一二三区视频| 在线一区二区视频| 成人国产精品免费观看动漫| 美国三级日本三级久久99| 一区二区三区日本| 国产精品电影一区二区| 精品人伦一区二区色婷婷| 欧美精品tushy高清| 91香蕉视频污在线| 国产xxx精品视频大全| 免费观看一级欧美片| 亚洲国产视频a| 亚洲日本乱码在线观看| 国产精品女人毛片| 国产亚洲一区二区三区四区 | 91福利视频网站| 成人精品免费看| 国产伦精一区二区三区| 免费成人美女在线观看.| 日日摸夜夜添夜夜添精品视频 | 欧美在线观看一区| 99久久免费视频.com| 国产高清在线精品| 国产乱码精品一区二区三区忘忧草 | 成人黄色av电影| 理论片日本一区| 久久国产三级精品| 久久精品72免费观看| 九色综合国产一区二区三区| 日本视频免费一区| 日韩精品成人一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 欧美激情综合五月色丁香| 国产精品久久久久久福利一牛影视| 欧美日韩亚洲综合一区二区三区| 国产mv日韩mv欧美| 一区二区三区四区蜜桃 | 国内不卡的二区三区中文字幕| 日本不卡在线视频| 青青草成人在线观看| 久久国产麻豆精品| 国产成人鲁色资源国产91色综 | 欧美日韩精品是欧美日韩精品| 色综合天天综合在线视频| 91成人国产精品| 91精品国产入口| 欧美不卡在线视频| 中文av一区特黄| 亚洲国产日韩在线一区模特| 日韩精品久久久久久| 国产一区二区免费看| kk眼镜猥琐国模调教系列一区二区| 色欧美88888久久久久久影院| 欧美人与禽zozo性伦| 精品第一国产综合精品aⅴ| 国产精品免费视频一区| 午夜私人影院久久久久| 精品亚洲欧美一区| 91美女蜜桃在线| 欧美不卡一区二区三区四区| 国产精品欧美久久久久无广告 | 欧美在线一区二区三区| 91精品国产综合久久久久久 | 国产精品网站导航| 一区二区在线观看免费视频播放| 日韩欧美一二三区| 国产女同互慰高潮91漫画| 一区二区三区四区蜜桃| 精品一区二区在线看| 99re这里都是精品| 欧美mv日韩mv| 日韩精品一区二区三区四区| 蜜桃久久av一区| 精品视频一区 二区 三区| 中文字幕亚洲在| 色婷婷狠狠综合| 亚洲精选视频在线| 麻豆视频观看网址久久| 色综合天天性综合| 久久久久久久综合狠狠综合|