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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vlc_threads.h

?? mips版本的VLC視頻服務(wù)器
?? H
字號(hào):
/***************************************************************************** * vlc_threads.h : threads implementation for the VideoLAN client * This header provides portable declarations for mutexes & conditions ***************************************************************************** * Copyright (C) 1999, 2002 the VideoLAN team * Copyright ? 2007-2008 Rémi Denis-Courmont * * Authors: Jean-Marc Dressler <polux@via.ecp.fr> *          Samuel Hocevar <sam@via.ecp.fr> *          Gildas Bazin <gbazin@netcourrier.com> *          Christophe Massiot <massiot@via.ecp.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, 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 General Public License for more details. * * You should have received a copy of the GNU 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. *****************************************************************************/#ifndef VLC_THREADS_H_#define VLC_THREADS_H_/** * \file * This file defines structures and functions for handling threads in vlc * */#if defined( UNDER_CE )#   include <errno.h>                                           /* WinCE API */#elif defined( WIN32 )#   include <process.h>                                         /* Win32 API */#   include <errno.h>#else                                         /* pthreads (like Linux & BSD) */#   define LIBVLC_USE_PTHREAD 1#   define LIBVLC_USE_PTHREAD_CANCEL 1#   define _APPLE_C_SOURCE    1 /* Proper pthread semantics on OSX */#   include <stdlib.h> /* lldiv_t definition (only in C99) */#   include <unistd.h> /* _POSIX_SPIN_LOCKS */#   include <pthread.h>    /* Needed for pthread_cond_timedwait */#   include <errno.h>#   include <time.h>#endif/***************************************************************************** * Constants *****************************************************************************//* Thread priorities */#ifdef __APPLE__#   define VLC_THREAD_PRIORITY_LOW      0#   define VLC_THREAD_PRIORITY_INPUT   22#   define VLC_THREAD_PRIORITY_AUDIO   22#   define VLC_THREAD_PRIORITY_VIDEO    0#   define VLC_THREAD_PRIORITY_OUTPUT  22#   define VLC_THREAD_PRIORITY_HIGHEST 22#elif defined(LIBVLC_USE_PTHREAD)#   define VLC_THREAD_PRIORITY_LOW      0#   define VLC_THREAD_PRIORITY_INPUT   10#   define VLC_THREAD_PRIORITY_AUDIO    5#   define VLC_THREAD_PRIORITY_VIDEO    0#   define VLC_THREAD_PRIORITY_OUTPUT  15#   define VLC_THREAD_PRIORITY_HIGHEST 20#elif defined(WIN32) || defined(UNDER_CE)/* Define different priorities for WinNT/2K/XP and Win9x/Me */#   define VLC_THREAD_PRIORITY_LOW 0#   define VLC_THREAD_PRIORITY_INPUT \        THREAD_PRIORITY_ABOVE_NORMAL#   define VLC_THREAD_PRIORITY_AUDIO \        THREAD_PRIORITY_HIGHEST#   define VLC_THREAD_PRIORITY_VIDEO 0#   define VLC_THREAD_PRIORITY_OUTPUT \        THREAD_PRIORITY_ABOVE_NORMAL#   define VLC_THREAD_PRIORITY_HIGHEST \        THREAD_PRIORITY_TIME_CRITICAL#else#   define VLC_THREAD_PRIORITY_LOW 0#   define VLC_THREAD_PRIORITY_INPUT 0#   define VLC_THREAD_PRIORITY_AUDIO 0#   define VLC_THREAD_PRIORITY_VIDEO 0#   define VLC_THREAD_PRIORITY_OUTPUT 0#   define VLC_THREAD_PRIORITY_HIGHEST 0#endif/***************************************************************************** * Type definitions *****************************************************************************/#if defined (LIBVLC_USE_PTHREAD)typedef pthread_t       vlc_thread_t;typedef pthread_mutex_t vlc_mutex_t;#define VLC_STATIC_MUTEX PTHREAD_MUTEX_INITIALIZERtypedef pthread_cond_t  vlc_cond_t;typedef pthread_key_t   vlc_threadvar_t;#elif defined( WIN32 )typedef struct{    HANDLE handle;    void  *(*entry) (void *);    void  *data;#if defined( UNDER_CE )    HANDLE cancel_event;#endif} *vlc_thread_t;typedef struct{    CRITICAL_SECTION mutex;    LONG initialized;} vlc_mutex_t;#define VLC_STATIC_MUTEX { .initialized = 0, }typedef HANDLE  vlc_cond_t;typedef DWORD   vlc_threadvar_t;#endif#if defined( WIN32 ) && !defined ETIMEDOUT#  define ETIMEDOUT 10060 /* This is the value in winsock.h. */#endif/***************************************************************************** * Function definitions *****************************************************************************/VLC_EXPORT( int,  vlc_mutex_init,    ( vlc_mutex_t * ) );VLC_EXPORT( int,  vlc_mutex_init_recursive, ( vlc_mutex_t * ) );VLC_EXPORT( void, vlc_mutex_destroy, ( vlc_mutex_t * ) );VLC_EXPORT( void, vlc_mutex_lock, ( vlc_mutex_t * ) );VLC_EXPORT( void, vlc_mutex_unlock, ( vlc_mutex_t * ) );VLC_EXPORT( int,  vlc_cond_init,     ( vlc_cond_t * ) );VLC_EXPORT( void, vlc_cond_destroy,  ( vlc_cond_t * ) );VLC_EXPORT( void, vlc_cond_signal, (vlc_cond_t *) );VLC_EXPORT( void, vlc_cond_broadcast, (vlc_cond_t *) );VLC_EXPORT( void, vlc_cond_wait, (vlc_cond_t *, vlc_mutex_t *) );VLC_EXPORT( int, vlc_cond_timedwait, (vlc_cond_t *, vlc_mutex_t *, mtime_t) );VLC_EXPORT( int, vlc_threadvar_create, (vlc_threadvar_t * , void (*) (void *) ) );VLC_EXPORT( void, vlc_threadvar_delete, (vlc_threadvar_t *) );VLC_EXPORT( int,  __vlc_thread_create, ( vlc_object_t *, const char *, int, const char *, void * ( * ) ( vlc_object_t * ), int, bool ) );VLC_EXPORT( int,  __vlc_thread_set_priority, ( vlc_object_t *, const char *, int, int ) );VLC_EXPORT( void, __vlc_thread_join,   ( vlc_object_t * ) );VLC_EXPORT( int, vlc_clone, (vlc_thread_t *, void * (*) (void *), void *, int) );VLC_EXPORT( void, vlc_cancel, (vlc_thread_t) );VLC_EXPORT( void, vlc_join, (vlc_thread_t, void **) );VLC_EXPORT (void, vlc_control_cancel, (int cmd, ...));#ifndef LIBVLC_USE_PTHREAD_CANCELenum {    VLC_SAVE_CANCEL,    VLC_RESTORE_CANCEL,    VLC_TEST_CANCEL,    VLC_DO_CANCEL,    VLC_CLEANUP_PUSH,    VLC_CLEANUP_POP,};#endifVLC_EXPORT(void, vlc_thread_ready, (vlc_object_t *obj));#define vlc_thread_ready(o) vlc_thread_ready(VLC_OBJECT(o))/** * Save the cancellation state and disable cancellation for the calling thread. * This function must be called before entering a piece of code that is not * cancellation-safe. * @return Previous cancellation state (opaque value). */static inline int vlc_savecancel (void){    int state;#if defined (LIBVLC_USE_PTHREAD_CANCEL)    (void) pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);#else    vlc_control_cancel (VLC_SAVE_CANCEL, &state);#endif    return state;}/** * Restore the cancellation state for the calling thread. * @param state previous state as returned by vlc_savecancel(). * @return Nothing, always succeeds. */static inline void vlc_restorecancel (int state){#if defined (LIBVLC_USE_PTHREAD_CANCEL)    (void) pthread_setcancelstate (state, NULL);#else    vlc_control_cancel (VLC_RESTORE_CANCEL, state);#endif}/** * Issues an explicit deferred cancellation point. * This has no effect if thread cancellation is disabled. * This can be called when there is a rather slow non-sleeping operation. */static inline void vlc_testcancel (void){#if defined (LIBVLC_USE_PTHREAD_CANCEL)    pthread_testcancel ();#else    vlc_control_cancel (VLC_TEST_CANCEL);#endif}#if defined (LIBVLC_USE_PTHREAD_CANCEL)/** * Registers a new procedure to run if the thread is cancelled (or otherwise * exits prematurely). Any call to vlc_cleanup_push() <b>must</b> paired with a * call to either vlc_cleanup_pop() or vlc_cleanup_run(). Branching into or out * of the block between these two function calls is not allowed (read: it will * likely crash the whole process). If multiple procedures are registered, * they are handled in last-in first-out order. * * @param routine procedure to call if the thread ends * @param arg argument for the procedure */# define vlc_cleanup_push( routine, arg ) pthread_cleanup_push (routine, arg)/** * Removes a cleanup procedure that was previously registered with * vlc_cleanup_push(). */# define vlc_cleanup_pop( ) pthread_cleanup_pop (0)/** * Removes a cleanup procedure that was previously registered with * vlc_cleanup_push(), and executes it. */# define vlc_cleanup_run( ) pthread_cleanup_pop (1)#elsetypedef struct vlc_cleanup_t vlc_cleanup_t;struct vlc_cleanup_t{    vlc_cleanup_t *next;    void         (*proc) (void *);    void          *data;};/* This macros opens a code block on purpose. This is needed for multiple * calls within a single function. This also prevent Win32 developpers from * writing code that would break on POSIX (POSIX opens a block as well). */# define vlc_cleanup_push( routine, arg ) \    do { \        vlc_cleanup_t vlc_cleanup_data = { NULL, routine, arg, }; \        vlc_control_cancel (VLC_CLEANUP_PUSH, &vlc_cleanup_data)# define vlc_cleanup_pop( ) \        vlc_control_cancel (VLC_CLEANUP_POP); \    } while (0)# define vlc_cleanup_run( ) \        vlc_control_cancel (VLC_CLEANUP_POP); \        vlc_cleanup_data.proc (vlc_cleanup_data.data); \    } while (0)#endif /* LIBVLC_USE_PTHREAD_CANCEL */static inline void vlc_cleanup_lock (void *lock){    vlc_mutex_unlock ((vlc_mutex_t *)lock);}#define mutex_cleanup_push( lock ) vlc_cleanup_push (vlc_cleanup_lock, lock)/***************************************************************************** * vlc_threadvar_set: create: set the value of a thread-local variable *****************************************************************************/static inline int vlc_threadvar_set( vlc_threadvar_t * p_tls, void *p_value ){    int i_ret;#if defined(LIBVLC_USE_PTHREAD)    i_ret = pthread_setspecific( *p_tls, p_value );#elif defined( UNDER_CE ) || defined( WIN32 )    i_ret = TlsSetValue( *p_tls, p_value ) ? EINVAL : 0;#endif    return i_ret;}/***************************************************************************** * vlc_threadvar_get: create: get the value of a thread-local variable *****************************************************************************/static inline void* vlc_threadvar_get( vlc_threadvar_t * p_tls ){    void *p_ret;#if defined(LIBVLC_USE_PTHREAD)    p_ret = pthread_getspecific( *p_tls );#elif defined( UNDER_CE ) || defined( WIN32 )    p_ret = TlsGetValue( *p_tls );#endif    return p_ret;}# if defined (_POSIX_SPIN_LOCKS) && ((_POSIX_SPIN_LOCKS - 0) > 0)typedef pthread_spinlock_t vlc_spinlock_t;/** * Initializes a spinlock. */static inline int vlc_spin_init (vlc_spinlock_t *spin){    return pthread_spin_init (spin, PTHREAD_PROCESS_PRIVATE);}/** * Acquires a spinlock. */static inline void vlc_spin_lock (vlc_spinlock_t *spin){    pthread_spin_lock (spin);}/** * Releases a spinlock. */static inline void vlc_spin_unlock (vlc_spinlock_t *spin){    pthread_spin_unlock (spin);}/** * Deinitializes a spinlock. */static inline void vlc_spin_destroy (vlc_spinlock_t *spin){    pthread_spin_destroy (spin);}#elif defined( WIN32 )typedef CRITICAL_SECTION vlc_spinlock_t;/** * Initializes a spinlock. */static inline int vlc_spin_init (vlc_spinlock_t *spin){#ifdef UNDER_CE    InitializeCriticalSection(spin);    return 0;#else    return !InitializeCriticalSectionAndSpinCount(spin, 4000);#endif}/** * Acquires a spinlock. */static inline void vlc_spin_lock (vlc_spinlock_t *spin){    EnterCriticalSection(spin);}/** * Releases a spinlock. */static inline void vlc_spin_unlock (vlc_spinlock_t *spin){    LeaveCriticalSection(spin);}/** * Deinitializes a spinlock. */static inline void vlc_spin_destroy (vlc_spinlock_t *spin){    DeleteCriticalSection(spin);}#else/* Fallback to plain mutexes if spinlocks are not available */typedef vlc_mutex_t vlc_spinlock_t;static inline int vlc_spin_init (vlc_spinlock_t *spin){    return vlc_mutex_init (spin);}# define vlc_spin_lock    vlc_mutex_lock# define vlc_spin_unlock  vlc_mutex_unlock# define vlc_spin_destroy vlc_mutex_destroy#endif/** * Issues a full memory barrier. */#if defined (__APPLE__)# include <libkern/OSAtomic.h> /* OSMemoryBarrier() */#endifstatic inline void barrier (void){#if defined (__GNUC__) && \            ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))    __sync_synchronize ();#elif defined(__APPLE__)    OSMemoryBarrier ();#elif defined(__powerpc__)    asm volatile ("sync":::"memory");#elif 0 // defined(__i386__) /*  Requires SSE2 support */    asm volatile ("mfence":::"memory");#else    vlc_spinlock_t spin;    vlc_spin_init (&spin);    vlc_spin_lock (&spin);    vlc_spin_unlock (&spin);    vlc_spin_destroy (&spin);#endif}/***************************************************************************** * vlc_thread_create: create a thread *****************************************************************************/#define vlc_thread_create( P_THIS, PSZ_NAME, FUNC, PRIORITY, WAIT )         \    __vlc_thread_create( VLC_OBJECT(P_THIS), __FILE__, __LINE__, PSZ_NAME, FUNC, PRIORITY, WAIT )/***************************************************************************** * vlc_thread_set_priority: set the priority of the calling thread *****************************************************************************/#define vlc_thread_set_priority( P_THIS, PRIORITY )                         \    __vlc_thread_set_priority( VLC_OBJECT(P_THIS), __FILE__, __LINE__, PRIORITY )/***************************************************************************** * vlc_thread_join: wait until a thread exits *****************************************************************************/#define vlc_thread_join( P_THIS )                                           \    __vlc_thread_join( VLC_OBJECT(P_THIS) )#ifdef __cplusplus/** * Helper C++ class to lock a mutex. * The mutex is locked when the object is created, and unlocked when the object * is destroyed. */class vlc_mutex_locker{    private:        vlc_mutex_t *lock;    public:        vlc_mutex_locker (vlc_mutex_t *m) : lock (m)        {            vlc_mutex_lock (lock);        }        ~vlc_mutex_locker (void)        {            vlc_mutex_unlock (lock);        }};#endif#endif /* !_VLC_THREADS_H */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
有码一区二区三区| 欧美日韩精品一区二区三区四区| 91精品国产福利在线观看| 一区二区免费看| 欧美精品日日鲁夜夜添| 青娱乐精品在线视频| 欧美一级理论性理论a| 精品一区二区三区蜜桃| 欧美激情一区在线| 北岛玲一区二区三区四区| 国产片一区二区三区| 91污片在线观看| 五月激情六月综合| 日韩欧美高清一区| 成人性生交大合| 亚洲国产另类av| 精品久久久久久久人人人人传媒| 国产成人精品亚洲777人妖| 中文字幕日韩欧美一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲最大色网站| 亚洲精品一区二区三区在线观看| 国内精品久久久久影院一蜜桃| xfplay精品久久| 91美女福利视频| 男女性色大片免费观看一区二区| 国产午夜精品在线观看| 色婷婷精品大视频在线蜜桃视频| 日韩精品成人一区二区在线| 亚洲aaa精品| 26uuu久久综合| 粉嫩av一区二区三区| 亚洲欧美一区二区三区国产精品| 欧美日韩精品欧美日韩精品| 黑人巨大精品欧美一区| 亚洲欧美日韩国产综合在线| 欧美一二三在线| 一本色道久久综合精品竹菊| 日韩成人一级片| 亚洲精品视频免费看| 26uuu色噜噜精品一区二区| 欧美亚州韩日在线看免费版国语版| 精品在线免费视频| 午夜久久久久久久久久一区二区| 国产欧美日韩不卡| 日韩午夜中文字幕| 91福利精品视频| 成人午夜免费电影| 精彩视频一区二区三区| 午夜在线成人av| 亚洲欧美一区二区三区久本道91 | 亚洲人成网站精品片在线观看 | 午夜婷婷国产麻豆精品| 中文字幕日韩欧美一区二区三区| 精品99一区二区| 7777精品伊人久久久大香线蕉的| 一本久道中文字幕精品亚洲嫩| 国产精品一线二线三线| 美女www一区二区| 亚洲国产精品欧美一二99| 成人免费在线视频| 久久久精品免费免费| 日韩一区二区麻豆国产| 在线播放一区二区三区| 欧美三级韩国三级日本三斤| 91麻豆成人久久精品二区三区| 国产成人aaa| 国产激情一区二区三区四区 | 国产91精品露脸国语对白| 美女一区二区在线观看| 日韩精品每日更新| 丝袜a∨在线一区二区三区不卡| 亚洲人妖av一区二区| 国产精品你懂的| 国产精品免费丝袜| 国产精品毛片a∨一区二区三区| 国产欧美视频一区二区三区| 久久亚洲综合色| 久久综合久久综合久久综合| 欧美精品一区二区三区很污很色的| 日韩三级中文字幕| 精品乱人伦小说| 久久天天做天天爱综合色| 久久亚洲二区三区| 国产丝袜欧美中文另类| 国产精品―色哟哟| 亚洲欧美日韩国产成人精品影院 | 国产精品乱子久久久久| 国产精品成人免费在线| 亚洲丝袜另类动漫二区| 亚洲色图欧洲色图婷婷| 亚洲综合图片区| 丝袜诱惑亚洲看片| 老司机免费视频一区二区 | 黄一区二区三区| 麻豆精品视频在线观看视频| 亚洲一区在线观看免费| 亚洲一区二区三区精品在线| 日本免费新一区视频| 看国产成人h片视频| 国产乱妇无码大片在线观看| 高清国产一区二区三区| 色综合色狠狠综合色| 欧美日韩一级黄| 精品国产91洋老外米糕| 国产精品久久久久久久久晋中 | 中文字幕在线不卡| 亚洲成人午夜电影| 国产综合久久久久久久久久久久| 成人综合在线观看| 欧美视频一区二区三区四区| 欧美一区二区三区视频| 国产精品入口麻豆原神| 亚洲第一搞黄网站| 国产乱码精品一区二区三| 色菇凉天天综合网| 欧美α欧美αv大片| 日韩码欧中文字| 麻豆精品视频在线| 99精品国产热久久91蜜凸| 欧美一区二区三区四区五区| 亚洲欧洲另类国产综合| 美女一区二区三区| 一本高清dvd不卡在线观看| 欧美电影免费观看高清完整版在| 日韩一区有码在线| 九九视频精品免费| 欧美三级中文字| 亚洲国产电影在线观看| 五月天亚洲精品| 91在线一区二区| 精品国产凹凸成av人网站| 亚洲一卡二卡三卡四卡 | 91亚洲精品久久久蜜桃网站 | 久久色在线视频| 亚洲一区二区黄色| gogo大胆日本视频一区| 日韩免费观看高清完整版| 一区二区三区国产| 国产成a人无v码亚洲福利| 欧美一区二区在线观看| 一区二区三区在线观看国产| 韩国一区二区在线观看| 欧美日韩国产片| 亚洲精品第一国产综合野| 国产69精品久久99不卡| 精品日韩一区二区三区 | 欧洲精品中文字幕| 国产精品久久看| 国产一区二区日韩精品| 日韩午夜中文字幕| 亚洲精品中文在线| 国产成人精品免费网站| 精品久久久久久久久久久久久久久久久 | 国产欧美日韩精品一区| 乱一区二区av| 欧美军同video69gay| 成人欧美一区二区三区黑人麻豆| 久久99久久99精品免视看婷婷| 精品视频一区二区三区免费| 亚洲色图都市小说| 成人国产一区二区三区精品| 久久伊99综合婷婷久久伊| 一区二区三区四区不卡视频| 成人免费视频app| 国产欧美日韩久久| 成人午夜免费视频| 亚洲视频一区在线观看| 99精品黄色片免费大全| 一区二区三区四区五区视频在线观看 | 91精选在线观看| 天天影视色香欲综合网老头| 欧美视频一区在线| 午夜成人在线视频| 欧美一区二区在线不卡| 麻豆精品视频在线观看免费| 精品999久久久| 风间由美一区二区av101| 国产欧美精品区一区二区三区| 国产成人精品三级| 中文字幕一区二区视频| 白白色亚洲国产精品| 亚洲免费资源在线播放| 国产高清亚洲一区| 国产精品丝袜久久久久久app| av午夜一区麻豆| 亚洲伦理在线精品| 欧美乱妇20p| 蜜臀av性久久久久蜜臀aⅴ| 26uuu久久天堂性欧美| 国产xxx精品视频大全| 亚洲免费色视频| 欧美精品久久久久久久多人混战| 美女任你摸久久| 欧美高清在线一区二区| 99国产精品国产精品久久| 午夜视频在线观看一区二区三区| 日韩色视频在线观看| 国产成人av电影在线观看| 亚洲私人黄色宅男|