亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美一区二区视频在线观看2020| 欧美偷拍一区二区| 午夜精品久久久久久久久久久| 欧美激情一区二区三区四区| 欧美xxxx在线观看| 精品国产一区二区三区av性色| 日韩午夜在线影院| 欧美一卡二卡三卡四卡| 日韩一区二区三区av| 日韩视频永久免费| 26uuu久久天堂性欧美| 久久夜色精品一区| 欧美国产一区在线| 中文字幕一区在线观看视频| 亚洲色图.com| 舔着乳尖日韩一区| 日本亚洲视频在线| 国产一本一道久久香蕉| 国产成人免费视频| 一本到高清视频免费精品| 欧美亚洲国产一区二区三区va| 欧美日韩国产影片| 精品免费视频一区二区| 国产精品青草久久| 亚洲va天堂va国产va久| 国产米奇在线777精品观看| 99视频国产精品| 91精品国产手机| 国产精品久久久久影院| 亚洲国产精品久久一线不卡| 精品一区二区久久| 99re66热这里只有精品3直播 | 天天av天天翘天天综合网| 亚洲午夜免费电影| 国产精品资源在线看| 一本久久精品一区二区| 日韩一区二区三区视频在线| 久久精品视频在线免费观看| 亚洲国产日韩一级| 大桥未久av一区二区三区中文| 在线视频中文字幕一区二区| www精品美女久久久tv| 亚洲精品成人a在线观看| 国产综合久久久久久鬼色| 色综合天天综合网国产成人综合天| 日韩一区二区免费在线观看| 亚洲精品国产无天堂网2021 | 久久综合九色综合97婷婷| 综合婷婷亚洲小说| 狠狠狠色丁香婷婷综合久久五月| 一本到高清视频免费精品| 久久久www免费人成精品| 五月婷婷激情综合| 色婷婷综合久久久| 国产精品情趣视频| 国产成人精品亚洲午夜麻豆| 日韩欧美一二区| 亚洲小少妇裸体bbw| 91最新地址在线播放| 久久这里只有精品首页| 免费xxxx性欧美18vr| 欧美影院一区二区三区| 成人欧美一区二区三区小说 | 亚洲另类中文字| jlzzjlzz欧美大全| 欧美国产日韩a欧美在线观看| 日本女人一区二区三区| 欧美日韩一区视频| 中文字幕永久在线不卡| 成人黄色av网站在线| 国产视频一区在线观看| 国产综合久久久久影院| 久久亚洲综合色一区二区三区| 亚洲午夜久久久久中文字幕久| 日本乱人伦一区| 亚洲美女偷拍久久| 色综合 综合色| 一区二区三区精品在线观看| 色婷婷狠狠综合| 亚洲欧美国产77777| 色噜噜狠狠一区二区三区果冻| 亚洲手机成人高清视频| 色综合天天综合网国产成人综合天 | 成人一区二区视频| 国产精品福利影院| 北岛玲一区二区三区四区| 国产日产欧美精品一区二区三区| 国产成a人亚洲精品| 中文字幕一区免费在线观看| 99国产精品久久久久久久久久久| 亚洲视频图片小说| 欧美性xxxxx极品少妇| 五月婷婷久久综合| 亚洲精品一区二区三区蜜桃下载| 国产在线国偷精品免费看| 国产午夜精品一区二区| 欧洲在线/亚洲| 婷婷成人激情在线网| 久久网站热最新地址| av一区二区不卡| 五月婷婷久久综合| 久久久久国产精品麻豆ai换脸| 成人精品免费视频| 丝袜脚交一区二区| 国产精品私房写真福利视频| 欧美吞精做爰啪啪高潮| 国产一区 二区| 亚洲福利视频三区| 久久综合久久综合久久综合| 99热99精品| 久久99精品国产91久久来源| 亚洲手机成人高清视频| 日韩欧美精品三级| 色综合色狠狠天天综合色| 美女视频黄久久| 成人免费视频在线观看| 日韩欧美激情四射| 色一情一乱一乱一91av| 国模无码大尺度一区二区三区| 亚洲美女淫视频| 国产午夜精品福利| 8x8x8国产精品| 色综合久久天天| 丁香激情综合国产| 日本不卡视频在线观看| 中文字幕人成不卡一区| 欧美电视剧在线看免费| 欧美综合亚洲图片综合区| 福利视频网站一区二区三区| 美女免费视频一区二区| 亚洲愉拍自拍另类高清精品| 国产欧美一区二区精品性| 555www色欧美视频| 91女厕偷拍女厕偷拍高清| 国产盗摄一区二区三区| 久久丁香综合五月国产三级网站| 亚洲国产aⅴ天堂久久| 国产精品美女一区二区三区| ww亚洲ww在线观看国产| 91精品婷婷国产综合久久性色| 91免费版pro下载短视频| 国产成人h网站| 国产一区二区美女诱惑| 精品一区二区综合| 久久精品久久综合| 美女脱光内衣内裤视频久久影院| 亚洲一区二区三区四区五区中文 | 国产黄人亚洲片| 国产成人综合视频| 国产在线精品免费| 久88久久88久久久| 看片的网站亚洲| 极品少妇xxxx偷拍精品少妇| 蜜桃av一区二区在线观看| 蜜桃视频一区二区三区在线观看| 亚洲午夜精品17c| 手机精品视频在线观看| 五月激情综合婷婷| 热久久久久久久| 久久精品国产第一区二区三区| 久久9热精品视频| 激情久久五月天| 成人午夜精品一区二区三区| 99久久综合狠狠综合久久| 99国产精品国产精品毛片| 91福利社在线观看| 91精品国产综合久久久久久漫画| 欧美一区二区视频在线观看2022| 精品捆绑美女sm三区| 国产精品麻豆一区二区| 亚洲在线中文字幕| 琪琪一区二区三区| 国产99久久久久| 欧美亚日韩国产aⅴ精品中极品| 欧美男生操女生| 久久亚洲影视婷婷| 国产精品久久久久aaaa樱花| 一区二区三区精品在线观看| 看片网站欧美日韩| 99国产精品久久久久久久久久久| 欧美亚洲禁片免费| 久久久久99精品国产片| 一区二区三区欧美亚洲| 麻豆91精品视频| gogogo免费视频观看亚洲一| 欧美日韩在线综合| 久久久九九九九| 亚洲一级二级三级在线免费观看| 美腿丝袜在线亚洲一区| 99re这里只有精品视频首页| 日韩一区二区三区视频在线观看| 国产精品女主播av| 日韩国产精品久久久久久亚洲| 国产麻豆91精品| 欧美三区免费完整视频在线观看| 精品国产免费人成在线观看| 一区二区久久久久| 国产91高潮流白浆在线麻豆| 欧美精品乱码久久久久久按摩| 亚洲国产激情av|