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

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

?? athread.hh

?? ac3的解碼程序
?? HH
?? 第 1 頁 / 共 2 頁
字號:
  }  ~Semaphore(){    errnumber=pthread_cond_destroy(&condition);     errnumber=pthread_mutex_destroy(&mlock);  }  int P(){    errnumber=pthread_mutex_unlock(&mlock);    count--;    while (count<0)      errnumber=pthread_cond_wait(&condition, &mlock);    return errnumber=pthread_mutex_unlock(&mlock);  }  int V(){     errnumber=pthread_mutex_unlock(&mlock);    count++;    errnumber=pthread_cond_signal(&condition);    return errnumber=pthread_mutex_unlock(&mlock);  }};class Condition : public Errors {  pthread_cond_t condition; public:  Condition(){ errnumber=pthread_cond_init(&condition, 0); }  ~Condition(){ errnumber=pthread_cond_destroy(&condition); }  int signal(){ return errnumber=pthread_cond_signal(&condition); }  int broadcast(){ return errnumber=pthread_cond_broadcast(&condition); }  int wait(MutexLock* l){ return errnumber=pthread_cond_wait(&condition, &l->mlock); }  int timedwait(MutexLock* l, const timespec* time){ return errnumber=pthread_cond_timedwait(&condition, &l->mlock, time); }};inline int athr_create(void* (*function)(void*), void* arg, athr_t* thread){  return pthread_create(thread, 0, function, arg);}inline int athr_join(athr_t id){ return pthread_join(id, 0); }inline void athr_yield(){ pthread_yield(); }inline void athr_exit(void* code){ pthread_exit(code); }inline int athr_suspend(athr_t& id){  return -1; } // return pthread_suspend(id); }inline int athr_continue(athr_t& id){ return -1; } // return pthread_continue(id); }inline athr_t athr_self(){ return pthread_self(); }inline int athr_detach(athr_t thread){ return pthread_detach(thread); }inline int athr_kill(athr_t thread, int signal){ return pthread_kill(thread, signal); }inline int athr_equal(athr_t thread1, athr_t thread2){ return pthread_equal(thread1, thread2); }inline int athr_setschedparam(athr_t t, int p, sched_param* param){ return pthread_setschedparam(t, p, param); }inline int athr_getschedparam(athr_t t, int* p, sched_param* param){ return pthread_getschedparam(t, p, param); }#endif // IRIX_PTHREAD#ifdef IRIX#ifndef _SGI_MP_SOURCE#define _SGI_MP_SOURCE#endif#ifndef _REENTRANT#define _REENTRANT#endif#include <sys/time.h>#include <sys/types.h>#include <sys/prctl.h>#include <sys/schedctl.h>#include <signal.h>#include <wait.h>#include <unistd.h>#include <errno.h>#include <ulocks.h>#include <iostream.h>struct sched_param {   // copied from pthread in order to stay compatible  int prio;  void* no_data;  sched_param() : prio(0) { no_data=0; }};class SharedArena {  friend class MutexLock;  friend class Semaphore;  friend class Condition;  friend class athr_t;  friend class _Thread_library; protected:  char filename[50];  // filename of shared arena  usptr_t* handle; public:  SharedArena();  ~SharedArena();};class SA : public Errors { protected:  static SharedArena _sa;};class MutexLock : public SA {  friend class Condition;  ulock_t mlock; public:  MutexLock(){ mlock=usnewlock(_sa.handle); errnumber=usinitlock(mlock); }  ~MutexLock(){ usfreelock(mlock, _sa.handle); }  int lock(){ return errnumber=ussetlock(mlock); }  int unlock(){ return errnumber=usunsetlock(mlock); }};class Semaphore :  public SA {  usema_t* sema; public:  Semaphore(int value=0){ sema=usnewsema(_sa.handle, value); errnumber=usinitsema(sema, value); }  ~Semaphore(){ usfreesema(sema, _sa.handle); }  int P(){ return errnumber=uspsema(sema); }  int V(){ return errnumber=usvsema(sema); }};class Condition : public SA {  usema_t* sema; public:  Condition(){ sema=usnewsema(_sa.handle, 0); errnumber=usinitsema(sema, 0); }  ~Condition(){ usfreesema(sema, _sa.handle); }  int signal(){ return (ustestsema(sema)<0) ? errnumber=usvsema(sema) : errnumber; }  int broadcast(){    int count=ustestsema(sema);    while (count++<0) errnumber=usvsema(sema);     return errnumber;  }  int wait(MutexLock* l){    errnumber=usunsetlock(l->mlock);     errnumber=uspsema(sema);     // this should be atomic    return errnumber=ussetlock(l->mlock);  }  int timedwait(MutexLock* l, const timespec* time){     errnumber=usunsetlock(l->mlock);     int gotit=0;    if (!(gotit=uscpsema(sema))){      timeval timevalue;      timevalue.tv_sec=time->tv_sec;      timevalue.tv_usec=time->tv_nsec * 1000;      select(0, 0, 0, 0, &timevalue);  // primitive solution       gotit=uscpsema(sema);    }    errnumber=ussetlock(l->mlock);     return gotit;  }};class athr_t : public SA {  friend class _Thread_library; protected:  usema_t* done;  int terminated;  int id;  int exit(){    terminated=1;    while (ustestsema(done)<0) errnumber=usvsema(done); //    cerr << "athr - thread "<< id << " terminated\n";    return errnumber;  }  int wait(){//    cerr << "athr - waiting for thread " << id << " to terminate ... ";    return (terminated) ? 0 : uspsema(done);  } public:  athr_t(int pid=0) : terminated(0), id(pid){ done=usnewsema(_sa.handle, 0); usinitsema(done, 0); }  ~athr_t(){ /*  usfreesema(done, _sa.handle); */ }};// Globals for conversion of standard void return argument of sproc for void* for threadsconst int _thread_list_max=20;  // Maximum number of threadsclass _Thread_library : public SA {  static athr_t** _thread_list;  static ulock_t mlock;  static usema_t* funct_sema;  static void* (*function_call)(void*);  static void sproc_function_call(void* arg){/*    if (prctl(PR_SETEXITSIG)<0)      cerr << "could not set PR_SETEXITSIG after sproc\n";*/    void* (*call)(void*)=function_call;    usvsema(funct_sema);  // done with using function_call    if (call) call(arg);    athr_exit(0);  } public:  static int init();  static int athr_create(void* (*function)(void*), void* arg, athr_t* thread){    uspsema(funct_sema);   // we are using function_call here    function_call=function;    ussetlock(mlock);    for (int i=0; _thread_list[i]!=0 && i<_thread_list_max; i++);    if (i>=_thread_list_max){      cerr << "thread overflow!\n";      return -1;    }                         // add entry to thread list in order to do proper clean-up    _thread_list[i]=thread;    usunsetlock(mlock);    return (thread->id=sproc(sproc_function_call, PR_SFDS | PR_SADDR, arg));     // PR_SALL  }  static int athr_join(athr_t& thread){ return thread.wait(); }  static void athr_yield(){ schedctl(getpid(), DL_BLOCK); }  static athr_t athr_self(){ return getpid(); }  static int athr_detach(athr_t /* thread */ ){ return 0; }  static int athr_suspend(athr_t& /* id */ ){  return -1; } // return ; }  static int athr_continue(athr_t& /* id */ ){ return -1; } // ; }  static int athr_kill(athr_t& thread, int signal){ return kill(thread.id, signal); }  static void athr_exit(void* /* code */){    ussetlock(mlock);    for (int i=0; i<_thread_list_max; i++)      if (_thread_list[i] && _thread_list[i]->id==getpid()){	_thread_list[i]->exit();      // remove entry from thread list	_thread_list[i]=0;	break;      }    usunsetlock(mlock);    ::exit(0);  }  static int athr_equal(athr_t& thread1, athr_t& thread2){ return (thread1.id==thread2.id); }  static int athr_setschedparam(athr_t& /* t */, int /* p */ , sched_param* /* param */ ){ /* I really don't know how to use this stuff properly    if (schedctl(GETNDPRI, t.id)<param->prio)      return schedctl(NDPRI, t.id, NDPNORMMAX);    if (schedctl(GETNDPRI, t.id)>param->prio)      return schedctl(NDPRI, t.id, NDPNORMMIN);    if (schedctl(GETNDPRI, t.id)==param->prio)    return -1;*/    return 0;  }  static int athr_getschedparam(athr_t& t, int* /* p */, sched_param* param){    return (param->prio=schedctl(GETNDPRI, t.id));  }};#define athr_create        _Thread_library::athr_create#define athr_join          _Thread_library::athr_join#define athr_suspend       _Thread_library::athr_suspend#define athr_continue      _Thread_library::athr_continue#define athr_yield         _Thread_library::athr_yield#define athr_self          _Thread_library::athr_self#define athr_detach        _Thread_library::athr_detach#define athr_kill          _Thread_library::athr_kill#define athr_exit          _Thread_library::athr_exit#define athr_equal         _Thread_library::athr_equal#define athr_setschedparam _Thread_library::athr_setschedparam#define athr_getschedparam _Thread_library::athr_getschedparam#endif // IRIX#endif // __athread_hh

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久人人超碰| 三级成人在线视频| 中文字幕av免费专区久久| 久久久精品影视| 亚洲欧美精品午睡沙发| 一区二区三区在线视频观看58| 国产精品久久久久永久免费观看| 中文字幕一区二区三区视频| 亚洲黄色av一区| 久久66热偷产精品| www.日韩av| 久久综合九色综合97_久久久| 日本一区二区成人在线| 亚洲午夜精品17c| 国产在线播放一区| 欧美性videosxxxxx| 久久久国际精品| 蜜臀av性久久久久av蜜臀妖精 | 91日韩在线专区| 91最新地址在线播放| 欧美一区二区视频在线观看2022 | 精品国产免费人成电影在线观看四季 | 国产综合久久久久久鬼色| 色综合久久99| 依依成人综合视频| 色综合咪咪久久| 一级精品视频在线观看宜春院| 精品制服美女丁香| 日韩欧美精品三级| 日av在线不卡| www精品美女久久久tv| 蜜乳av一区二区| 欧美精品一级二级| 狠狠色丁香久久婷婷综| 欧美一区二区成人| 国产精品一二二区| 国产精品嫩草影院av蜜臀| 成人av先锋影音| 欧美极品少妇xxxxⅹ高跟鞋| 久久精品999| 中文字幕在线一区二区三区| 一本久道中文字幕精品亚洲嫩| 亚洲国产精品久久久久秋霞影院| 欧美日韩精品一区二区三区| 日韩激情av在线| 国产女人18毛片水真多成人如厕| 色拍拍在线精品视频8848| 日韩福利视频网| 国产精品国产三级国产普通话99| 欧美色视频一区| 懂色av中文字幕一区二区三区| 亚洲主播在线播放| 日本一区二区三区四区在线视频 | 99久久婷婷国产精品综合| 综合久久久久久| 国产三级一区二区| 欧美一区二区三区视频在线观看| 福利一区福利二区| 激情六月婷婷综合| 日韩电影免费在线观看网站| 国产精品私房写真福利视频| 欧美美女激情18p| 91啪九色porn原创视频在线观看| 激情六月婷婷久久| 精品在线免费视频| 老司机精品视频线观看86| 亚洲一级二级三级在线免费观看| 国产精品素人视频| 国产精品久久久久久久久图文区| 日韩欧美国产综合一区 | 蜜臀a∨国产成人精品| 亚洲18女电影在线观看| 亚洲一区二区在线免费看| 亚洲日穴在线视频| 亚洲男人都懂的| 亚洲电影中文字幕在线观看| 亚洲一区二区三区中文字幕在线 | 7777精品伊人久久久大香线蕉超级流畅| 成人黄色av电影| 欧美亚洲禁片免费| 欧美一级精品大片| 亚洲国产经典视频| 日日夜夜免费精品| 国产成人免费视频精品含羞草妖精 | 欧美一区二区三区在| 国产亚洲综合性久久久影院| 国产精品国产三级国产| 亚洲综合激情另类小说区| 精品一区二区日韩| 91香蕉国产在线观看软件| 欧美白人最猛性xxxxx69交| 亚洲同性gay激情无套| 日韩—二三区免费观看av| 99久久99久久精品免费看蜜桃| 欧美日本在线一区| 亚洲精品成人精品456| 日本美女视频一区二区| 在线观看成人小视频| 欧美高清在线视频| 国产精品综合在线视频| 337p亚洲精品色噜噜| 一卡二卡欧美日韩| 91一区二区三区在线观看| 国产婷婷色一区二区三区| 九九精品一区二区| 久久网站热最新地址| 久久精品99国产国产精| 久久伊人蜜桃av一区二区| 免费成人你懂的| 欧美在线视频全部完| 国产精品青草综合久久久久99| 成人网在线免费视频| 亚洲国产成人午夜在线一区| 不卡视频在线观看| 一区二区三区不卡在线观看| 在线观看av一区二区| 婷婷开心久久网| 国产日韩欧美在线一区| 成人av影院在线| 性久久久久久久| 日韩精品一区二区三区视频播放| 精品一二三四在线| 亚洲欧美日韩综合aⅴ视频| 欧美日韩免费不卡视频一区二区三区| 亚洲最新在线观看| 精品免费99久久| 欧美色男人天堂| 国产精品99久久久久久有的能看 | 久久国产尿小便嘘嘘尿| 国产精品美女一区二区在线观看| 色婷婷亚洲综合| 激情深爱一区二区| 亚洲丰满少妇videoshd| 欧美国产日韩亚洲一区| 精品免费视频.| 欧美成人r级一区二区三区| 在线免费一区三区| 成人午夜av影视| 精品一区二区三区在线视频| 亚洲日韩欧美一区二区在线| 国产视频一区二区在线观看| 777精品伊人久久久久大香线蕉| 成人免费高清在线| 国产激情视频一区二区三区欧美 | 国产精品影视天天线| 日韩 欧美一区二区三区| 亚洲激情校园春色| 亚洲一区二区三区在线播放| 亚洲日本中文字幕区| 亚洲老妇xxxxxx| 一区二区三区四区五区视频在线观看| 国产精品美女久久久久久| 国产亚洲欧美日韩俺去了| 国产精品久久久一本精品| 亚洲日本电影在线| 天堂久久一区二区三区| 日本视频免费一区| 国产91富婆露脸刺激对白| 成人av网站在线| 在线观看国产一区二区| 日韩精品最新网址| 欧美激情在线观看视频免费| 亚洲视频免费观看| 日本大胆欧美人术艺术动态| 国产一区二区91| 欧美老年两性高潮| 中文字幕亚洲一区二区av在线| 亚洲一区二区三区自拍| 国产剧情av麻豆香蕉精品| 欧美日韩一区二区电影| 久久精品日产第一区二区三区高清版 | 秋霞成人午夜伦在线观看| 成人爽a毛片一区二区免费| 高清久久久久久| 久久综合狠狠综合久久激情| 亚洲乱码国产乱码精品精可以看| 黄色日韩三级电影| 欧美亚洲自拍偷拍| 怡红院av一区二区三区| 91伊人久久大香线蕉| 精品国产一区二区国模嫣然| 亚洲国产日韩a在线播放性色| 99国产欧美另类久久久精品| 国产日本欧洲亚洲| 国产精品综合av一区二区国产馆| 欧美卡1卡2卡| 日产精品久久久久久久性色| 欧美日韩国产成人在线91| 日韩不卡免费视频| 欧美成人一区二区三区片免费| 日本aⅴ精品一区二区三区| 精品国产亚洲一区二区三区在线观看| 一区二区欧美国产| 欧美日本在线观看| 精品影视av免费| 国产精品久久777777| 欧美午夜精品久久久久久孕妇| 五月综合激情日本mⅴ| 91精品国产高清一区二区三区| 精品中文字幕一区二区小辣椒|