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

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

?? lock.h

?? 磁盤管理工具,主要管理光盤信息和內容希望大家喜歡
?? H
?? 第 1 頁 / 共 3 頁
字號:
/* Locking in multithreaded situations.   Copyright (C) 2005-2006 Free Software Foundation, Inc.   This program is free software; you can redistribute it and/or modify it   under the terms of the GNU Library General Public License as published   by the Free Software Foundation; either version 2, or (at your option)   any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Library General Public License for more details.   You should have received a copy of the GNU Library General Public   License along with this program; if not, write to the Free Software   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,   USA.  *//* Written by Bruno Haible <bruno@clisp.org>, 2005.   Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,   gthr-win32.h.  *//* This file contains locking primitives for use with a given thread library.   It does not contain primitives for creating threads or for other   synchronization primitives.   Normal (non-recursive) locks:     Type:                gl_lock_t     Declaration:         gl_lock_define(extern, name)     Initializer:         gl_lock_define_initialized(, name)     Initialization:      gl_lock_init (name);     Taking the lock:     gl_lock_lock (name);     Releasing the lock:  gl_lock_unlock (name);     De-initialization:   gl_lock_destroy (name);   Read-Write (non-recursive) locks:     Type:                gl_rwlock_t     Declaration:         gl_rwlock_define(extern, name)     Initializer:         gl_rwlock_define_initialized(, name)     Initialization:      gl_rwlock_init (name);     Taking the lock:     gl_rwlock_rdlock (name);                          gl_rwlock_wrlock (name);     Releasing the lock:  gl_rwlock_unlock (name);     De-initialization:   gl_rwlock_destroy (name);   Recursive locks:     Type:                gl_recursive_lock_t     Declaration:         gl_recursive_lock_define(extern, name)     Initializer:         gl_recursive_lock_define_initialized(, name)     Initialization:      gl_recursive_lock_init (name);     Taking the lock:     gl_recursive_lock_lock (name);     Releasing the lock:  gl_recursive_lock_unlock (name);     De-initialization:   gl_recursive_lock_destroy (name);  Once-only execution:     Type:                gl_once_t     Initializer:         gl_once_define(extern, name)     Execution:           gl_once (name, initfunction);*/#ifndef _LOCK_H#define _LOCK_H/* ========================================================================= */#if USE_POSIX_THREADS/* Use the POSIX threads library.  */# include <pthread.h># include <stdlib.h># ifdef __cplusplusextern "C" {# endif# if PTHREAD_IN_USE_DETECTION_HARD/* The pthread_in_use() detection needs to be done at runtime.  */#  define pthread_in_use() \     glthread_in_use ()extern int glthread_in_use (void);# endif# if USE_POSIX_THREADS_WEAK/* Use weak references to the POSIX threads library.  *//* Weak references avoid dragging in external libraries if the other parts   of the program don't use them.  Here we use them, because we don't want   every program that uses libintl to depend on libpthread.  This assumes   that libpthread would not be loaded after libintl; i.e. if libintl is   loaded first, by an executable that does not depend on libpthread, and   then a module is dynamically loaded that depends on libpthread, libintl   will not be multithread-safe.  *//* The way to test at runtime whether libpthread is present is to test   whether a function pointer's value, such as &pthread_mutex_init, is   non-NULL.  However, some versions of GCC have a bug through which, in   PIC mode, &foo != NULL always evaluates to true if there is a direct   call to foo(...) in the same function.  To avoid this, we test the   address of a function in libpthread that we don't use.  */#  pragma weak pthread_mutex_init#  pragma weak pthread_mutex_lock#  pragma weak pthread_mutex_unlock#  pragma weak pthread_mutex_destroy#  pragma weak pthread_rwlock_init#  pragma weak pthread_rwlock_rdlock#  pragma weak pthread_rwlock_wrlock#  pragma weak pthread_rwlock_unlock#  pragma weak pthread_rwlock_destroy#  pragma weak pthread_once#  pragma weak pthread_cond_init#  pragma weak pthread_cond_wait#  pragma weak pthread_cond_signal#  pragma weak pthread_cond_broadcast#  pragma weak pthread_cond_destroy#  pragma weak pthread_mutexattr_init#  pragma weak pthread_mutexattr_settype#  pragma weak pthread_mutexattr_destroy#  ifndef pthread_self#   pragma weak pthread_self#  endif#  if !PTHREAD_IN_USE_DETECTION_HARD#   pragma weak pthread_cancel#   define pthread_in_use() (pthread_cancel != NULL)#  endif# else#  if !PTHREAD_IN_USE_DETECTION_HARD#   define pthread_in_use() 1#  endif# endif/* -------------------------- gl_lock_t datatype -------------------------- */typedef pthread_mutex_t gl_lock_t;# define gl_lock_define(STORAGECLASS, NAME) \    STORAGECLASS pthread_mutex_t NAME;# define gl_lock_define_initialized(STORAGECLASS, NAME) \    STORAGECLASS pthread_mutex_t NAME = gl_lock_initializer;# define gl_lock_initializer \    PTHREAD_MUTEX_INITIALIZER# define gl_lock_init(NAME) \    if (pthread_in_use () && pthread_mutex_init (&NAME, NULL) != 0) abort ()# define gl_lock_lock(NAME) \    if (pthread_in_use () && pthread_mutex_lock (&NAME) != 0) abort ()# define gl_lock_unlock(NAME) \    if (pthread_in_use () && pthread_mutex_unlock (&NAME) != 0) abort ()# define gl_lock_destroy(NAME) \    if (pthread_in_use () && pthread_mutex_destroy (&NAME) != 0) abort ()/* ------------------------- gl_rwlock_t datatype ------------------------- */# if HAVE_PTHREAD_RWLOCK#  ifdef PTHREAD_RWLOCK_INITIALIZERtypedef pthread_rwlock_t gl_rwlock_t;#   define gl_rwlock_define(STORAGECLASS, NAME) \      STORAGECLASS pthread_rwlock_t NAME;#   define gl_rwlock_define_initialized(STORAGECLASS, NAME) \      STORAGECLASS pthread_rwlock_t NAME = gl_rwlock_initializer;#   define gl_rwlock_initializer \      PTHREAD_RWLOCK_INITIALIZER#   define gl_rwlock_init(NAME) \      if (pthread_in_use () && pthread_rwlock_init (&NAME, NULL) != 0) abort ()#   define gl_rwlock_rdlock(NAME) \      if (pthread_in_use () && pthread_rwlock_rdlock (&NAME) != 0) abort ()#   define gl_rwlock_wrlock(NAME) \      if (pthread_in_use () && pthread_rwlock_wrlock (&NAME) != 0) abort ()#   define gl_rwlock_unlock(NAME) \      if (pthread_in_use () && pthread_rwlock_unlock (&NAME) != 0) abort ()#   define gl_rwlock_destroy(NAME) \      if (pthread_in_use () && pthread_rwlock_destroy (&NAME) != 0) abort ()#  elsetypedef struct        {          int initialized;          pthread_mutex_t guard;   /* protects the initialization */          pthread_rwlock_t rwlock; /* read-write lock */        }        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, PTHREAD_MUTEX_INITIALIZER }#   define gl_rwlock_init(NAME) \      if (pthread_in_use ()) glthread_rwlock_init (&NAME)#   define gl_rwlock_rdlock(NAME) \      if (pthread_in_use ()) glthread_rwlock_rdlock (&NAME)#   define gl_rwlock_wrlock(NAME) \      if (pthread_in_use ()) glthread_rwlock_wrlock (&NAME)#   define gl_rwlock_unlock(NAME) \      if (pthread_in_use ()) glthread_rwlock_unlock (&NAME)#   define gl_rwlock_destroy(NAME) \      if (pthread_in_use ()) 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);#  endif# elsetypedef struct        {          pthread_mutex_t lock; /* protects the remaining fields */          pthread_cond_t waiting_readers; /* waiting readers */          pthread_cond_t waiting_writers; /* waiting writers */          unsigned int waiting_writers_count; /* number of 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 \    { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0 }# define gl_rwlock_init(NAME) \    if (pthread_in_use ()) glthread_rwlock_init (&NAME)# define gl_rwlock_rdlock(NAME) \    if (pthread_in_use ()) glthread_rwlock_rdlock (&NAME)# define gl_rwlock_wrlock(NAME) \    if (pthread_in_use ()) glthread_rwlock_wrlock (&NAME)# define gl_rwlock_unlock(NAME) \    if (pthread_in_use ()) glthread_rwlock_unlock (&NAME)# define gl_rwlock_destroy(NAME) \    if (pthread_in_use ()) 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);# endif/* --------------------- gl_recursive_lock_t datatype --------------------- */# if HAVE_PTHREAD_MUTEX_RECURSIVE#  if defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NPtypedef pthread_mutex_t gl_recursive_lock_t;#   define gl_recursive_lock_define(STORAGECLASS, NAME) \      STORAGECLASS pthread_mutex_t NAME;#   define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \      STORAGECLASS pthread_mutex_t NAME = gl_recursive_lock_initializer;#   ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER#    define gl_recursive_lock_initializer \       PTHREAD_RECURSIVE_MUTEX_INITIALIZER#   else#    define gl_recursive_lock_initializer \       PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP#   endif#   define gl_recursive_lock_init(NAME) \      if (pthread_in_use () && pthread_mutex_init (&NAME, NULL) != 0) abort ()#   define gl_recursive_lock_lock(NAME) \      if (pthread_in_use () && pthread_mutex_lock (&NAME) != 0) abort ()#   define gl_recursive_lock_unlock(NAME) \      if (pthread_in_use () && pthread_mutex_unlock (&NAME) != 0) abort ()#   define gl_recursive_lock_destroy(NAME) \      if (pthread_in_use () && pthread_mutex_destroy (&NAME) != 0) abort ()#  else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产偷国产偷亚洲高清人白洁| 国产福利精品一区| 欧美影院一区二区| 福利视频网站一区二区三区| 国产成人在线看| 日本在线不卡一区| 亚洲第一久久影院| 热久久国产精品| 日韩不卡一区二区三区| 日韩国产精品大片| 一区二区三区中文字幕精品精品| 亚洲精品一卡二卡| 日韩专区一卡二卡| 日韩二区三区在线观看| 91精品国产麻豆| 国产一区二区三区四区五区美女| 国产视频911| 97精品超碰一区二区三区| 亚洲国产成人av| 精品国产乱码久久久久久老虎 | 91丝袜美女网| 五月综合激情网| 久久久久久亚洲综合影院红桃 | 久久99这里只有精品| 国产女主播一区| 欧美在线视频日韩| 韩国三级在线一区| 亚洲欧美激情插| 91精品蜜臀在线一区尤物| 国产激情一区二区三区四区 | 日韩午夜中文字幕| 国产成人在线视频网站| 亚洲精品你懂的| 久久综合色婷婷| 91年精品国产| 精品在线观看免费| 一区二区成人在线观看| 久久一夜天堂av一区二区三区| 91黄视频在线观看| 国产曰批免费观看久久久| 亚洲精品高清在线| 国产亚洲精品bt天堂精选| 欧美性受xxxx黑人xyx性爽| 激情另类小说区图片区视频区| 亚洲免费观看高清| 国产亚洲欧洲一区高清在线观看| 欧美在线不卡视频| 精品视频色一区| 日本一区免费视频| 欧美吻胸吃奶大尺度电影| 日韩1区2区3区| 91精品国产综合久久小美女| 午夜免费欧美电影| 欧美videossexotv100| 香蕉成人啪国产精品视频综合网| 欧美三级日韩三级| 欧美激情艳妇裸体舞| 成人av在线看| 综合久久久久久| 日本伊人色综合网| 尤物av一区二区| 国产欧美一区二区精品性| 69久久夜色精品国产69蝌蚪网| 99久久精品免费| 国产精品一二三区| 精品一区二区在线观看| 日本中文字幕一区二区有限公司| 一区二区三区在线高清| 中文字幕一区二区在线播放| 久久一区二区三区国产精品| 日韩一区二区三| 欧美高清视频不卡网| 欧美在线综合视频| 日本国产一区二区| 一道本成人在线| 91丨porny丨首页| 91社区在线播放| 99精品欧美一区二区三区综合在线| 国产不卡视频在线播放| 狠狠色综合日日| 国产在线国偷精品产拍免费yy | 亚洲天堂网中文字| 国产精品伦理在线| 成人免费一区二区三区视频| 国产欧美一区二区精品婷婷| 国产免费久久精品| 中文字幕中文乱码欧美一区二区 | 91精选在线观看| 91麻豆精品国产91久久久久久久久| 69久久99精品久久久久婷婷 | 国产女主播在线一区二区| 亚洲国产高清在线| 高清久久久久久| 另类小说欧美激情| 91免费国产在线| 激情小说欧美图片| 国产高清视频一区| 亚洲18影院在线观看| 国产精品视频免费看| 久久久亚洲精品石原莉奈| 精品福利一二区| 久久美女艺术照精彩视频福利播放| 日本高清不卡在线观看| 日韩欧美精品三级| 日韩欧美一区在线观看| 精品少妇一区二区三区免费观看| xfplay精品久久| 综合久久国产九一剧情麻豆| 亚洲精品大片www| 美女在线视频一区| 成人综合婷婷国产精品久久 | 亚洲男同性视频| 午夜免费欧美电影| 久久99精品国产91久久来源| 成人看片黄a免费看在线| 色诱视频网站一区| 日韩欧美在线一区二区三区| 久久久精品中文字幕麻豆发布| 亚洲日本乱码在线观看| 免费日韩伦理电影| 91老师片黄在线观看| 91精品国产综合久久香蕉麻豆| 国产亚洲精品aa午夜观看| 一区二区三区四区精品在线视频| 免费看日韩a级影片| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 欧美刺激午夜性久久久久久久| 国产精品成人在线观看| 爽好久久久欧美精品| 成人av一区二区三区| 91精品国产欧美一区二区18 | 欧美精品久久一区| 中文无字幕一区二区三区| 肉色丝袜一区二区| 国产成人小视频| 91精品国产入口在线| 亚洲欧美偷拍卡通变态| 国产成人在线影院| 亚洲视频 欧洲视频| 蜜臀av性久久久久av蜜臀妖精| 制服丝袜中文字幕一区| 亚洲欧洲精品一区二区三区| 美女视频第一区二区三区免费观看网站 | 波多野结衣精品在线| 欧美乱妇15p| 国产精品高潮呻吟久久| 天堂成人免费av电影一区| 在线综合+亚洲+欧美中文字幕| 成人在线综合网站| 欧美三级日本三级少妇99| 亚洲欧洲综合另类| 日韩福利电影在线观看| 色先锋aa成人| 国产欧美日韩另类一区| 日韩中文字幕亚洲一区二区va在线| 成人av资源在线观看| 91超碰这里只有精品国产| 2022国产精品视频| 免费亚洲电影在线| 91官网在线观看| 中文字幕+乱码+中文字幕一区| 一区二区三区欧美视频| 99r国产精品| 久久久久久久久久久黄色| 日本麻豆一区二区三区视频| 日本精品裸体写真集在线观看| 久久精品视频免费| 美女久久久精品| 欧美日韩一区二区三区视频| 一区二区三区欧美| 99久久精品情趣| 国产日韩欧美一区二区三区乱码 | 国内外成人在线| 欧美丝袜第三区| 亚洲色图清纯唯美| 成人午夜激情片| 国产天堂亚洲国产碰碰| 久久成人av少妇免费| 欧美精品三级在线观看| 亚洲一二三四在线| 欧美三区免费完整视频在线观看| 中文字幕一区二区三区蜜月| 国产一区二区美女诱惑| 日韩欧美视频一区| 国产乱子轮精品视频| 在线播放一区二区三区| 亚洲国产日日夜夜| 成人毛片老司机大片| 玉米视频成人免费看| 日本伦理一区二区| 亚洲精品高清视频在线观看| 欧美制服丝袜第一页| 亚洲一线二线三线视频| 欧美中文字幕一区二区三区亚洲| 亚洲乱码精品一二三四区日韩在线 | 久久精品99国产精品日本| xvideos.蜜桃一区二区| 国产精品456| 欧美激情综合在线| 国产成人在线网站|