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

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

?? ptw32_threadstart.c

?? pthread source code,you can compile directly
?? C
字號:
/* * ptw32_threadStart.c * * Description: * This translation unit implements routines which are private to * the implementation and may be used throughout it. * * -------------------------------------------------------------------------- * *      Pthreads-win32 - POSIX Threads Library for Win32 *      Copyright(C) 1998 John E. Bossom *      Copyright(C) 1999,2005 Pthreads-win32 contributors *  *      Contact Email: rpj@callisto.canberra.edu.au *  *      The current list of contributors is contained *      in the file CONTRIBUTORS included with the source *      code distribution. The list can also be seen at the *      following World Wide Web location: *      http://sources.redhat.com/pthreads-win32/contributors.html *  *      This library is free software; you can redistribute it and/or *      modify it under the terms of the GNU Lesser General Public *      License as published by the Free Software Foundation; either *      version 2 of the License, or (at your option) any later version. *  *      This library 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 *      Lesser General Public License for more details. *  *      You should have received a copy of the GNU Lesser General Public *      License along with this library in the file COPYING.LIB; *      if not, write to the Free Software Foundation, Inc., *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */#include "pthread.h"#include "implement.h"#ifdef __CLEANUP_SEHstatic DWORDExceptionFilter (EXCEPTION_POINTERS * ep, DWORD * ei){  switch (ep->ExceptionRecord->ExceptionCode)    {    case EXCEPTION_PTW32_SERVICES:      {	DWORD param;	DWORD numParams = ep->ExceptionRecord->NumberParameters;	numParams = (numParams > 3) ? 3 : numParams;	for (param = 0; param < numParams; param++)	  {	    ei[param] = ep->ExceptionRecord->ExceptionInformation[param];	  }	return EXCEPTION_EXECUTE_HANDLER;	break;      }    default:      {	/*	 * A system unexpected exception has occurred running the user's	 * routine. We need to cleanup before letting the exception	 * out of thread scope.	 */	pthread_t self = pthread_self ();	(void) pthread_mutex_destroy (&((ptw32_thread_t *)self.p)->cancelLock);	ptw32_callUserDestroyRoutines (self);	return EXCEPTION_CONTINUE_SEARCH;	break;      }    }}#elif defined(__CLEANUP_CXX)#if defined(_MSC_VER)# include <eh.h>#elif defined(__WATCOMC__)# include <eh.h># include <exceptio.h>typedef terminate_handler  terminate_function;#else# if defined(__GNUC__) && __GNUC__ < 3#   include <new.h># else#   include <new>using  std::terminate_handler;using  std::terminate;using  std::set_terminate;# endiftypedef terminate_handler  terminate_function;#endifstatic terminate_function  ptw32_oldTerminate;voidptw32_terminate (){  set_terminate (ptw32_oldTerminate);  (void) pthread_win32_thread_detach_np ();  terminate ();}#endif#if ! defined (__MINGW32__) || (defined (__MSVCRT__) && ! defined (__DMC__))unsigned  __stdcall#elsevoid#endifptw32_threadStart (void *vthreadParms){  ThreadParms * threadParms = (ThreadParms *) vthreadParms;  pthread_t self;  ptw32_thread_t * sp;  void *(*start) (void *);  void * arg;#ifdef __CLEANUP_SEH  DWORD  ei[] = { 0, 0, 0 };#endif#ifdef __CLEANUP_C  int setjmp_rc;#endif  void * status = (void *) 0;  self = threadParms->tid;  sp = (ptw32_thread_t *) self.p;  start = threadParms->start;  arg = threadParms->arg;  free (threadParms);#if defined (__MINGW32__) && ! defined (__MSVCRT__)  /*   * beginthread does not return the thread id and is running   * before it returns us the thread handle, and so we do it here.   */  sp->thread = GetCurrentThreadId ();  /*   * Here we're using cancelLock as a general-purpose lock   * to make the new thread wait until the creating thread   * has the new handle.   */  if (pthread_mutex_lock (&sp->cancelLock) == 0)    {      (void) pthread_mutex_unlock (&sp->cancelLock);    }#endif  pthread_setspecific (ptw32_selfThreadKey, sp);  sp->state = PThreadStateRunning;#ifdef __CLEANUP_SEH  __try  {    /*     * Run the caller's routine;     */    status = sp->exitStatus = (*start) (arg);#ifdef _UWIN    if (--pthread_count <= 0)      exit (0);#endif  }  __except (ExceptionFilter (GetExceptionInformation (), ei))  {    switch (ei[0])      {      case PTW32_EPS_CANCEL:	status = sp->exitStatus = PTHREAD_CANCELED;#ifdef _UWIN	if (--pthread_count <= 0)	  exit (0);#endif	break;      case PTW32_EPS_EXIT:	status = sp->exitStatus;	break;      default:	status = sp->exitStatus = PTHREAD_CANCELED;	break;      }  }#else /* __CLEANUP_SEH */#ifdef __CLEANUP_C  setjmp_rc = setjmp (sp->start_mark);  if (0 == setjmp_rc)    {      /*       * Run the caller's routine;       */      status = sp->exitStatus = (*start) (arg);    }  else    {      switch (setjmp_rc)	{	case PTW32_EPS_CANCEL:	  status = sp->exitStatus = PTHREAD_CANCELED;	  break;	case PTW32_EPS_EXIT:	  status = sp->exitStatus;	  break;	default:	  status = sp->exitStatus = PTHREAD_CANCELED;	  break;	}    }#else /* __CLEANUP_C */#ifdef __CLEANUP_CXX  ptw32_oldTerminate = set_terminate (&ptw32_terminate);  try  {    /*     * Run the caller's routine in a nested try block so that we     * can run the user's terminate function, which may call     * pthread_exit() or be canceled.     */    try    {      status = sp->exitStatus = (*start) (arg);    }    catch (ptw32_exception &)    {      /*       * Pass these through to the outer block.       */      throw;    }    catch (...)    {      /*       * We want to run the user's terminate function if supplied.       * That function may call pthread_exit() or be canceled, which will       * be handled by the outer try block.       *       * ptw32_terminate() will be called if there is no user       * supplied function.       */      terminate_function	term_func = set_terminate (0);      set_terminate (term_func);      if (term_func != 0)	{	  term_func ();	}      throw;    }  }  catch (ptw32_exception_cancel &)  {    /*     * Thread was canceled.     */    status = sp->exitStatus = PTHREAD_CANCELED;  }  catch (ptw32_exception_exit &)  {    /*     * Thread was exited via pthread_exit().     */    status = sp->exitStatus;  }  catch (...)  {    /*     * A system unexpected exception has occurred running the user's     * terminate routine. We get control back within this block - cleanup     * and release the exception out of thread scope.     */    status = sp->exitStatus = PTHREAD_CANCELED;    (void) pthread_mutex_lock (&sp->cancelLock);    sp->state = PThreadStateException;    (void) pthread_mutex_unlock (&sp->cancelLock);    (void) pthread_win32_thread_detach_np ();    (void) set_terminate (ptw32_oldTerminate);    throw;    /*     * Never reached.     */  }  (void) set_terminate (ptw32_oldTerminate);#else#error ERROR [__FILE__, line __LINE__]: Cleanup type undefined.#endif /* __CLEANUP_CXX */#endif /* __CLEANUP_C */#endif /* __CLEANUP_SEH */#if defined(PTW32_STATIC_LIB)  /*   * We need to cleanup the pthread now if we have   * been statically linked, in which case the cleanup   * in dllMain won't get done. Joinable threads will   * only be partially cleaned up and must be fully cleaned   * up by pthread_join() or pthread_detach().   *   * Note: if this library has been statically linked,   * implicitly created pthreads (those created   * for Win32 threads which have called pthreads routines)   * must be cleaned up explicitly by the application   * (by calling pthread_win32_thread_detach_np()).   * For the dll, dllMain will do the cleanup automatically.   */  (void) pthread_win32_thread_detach_np ();#endif#if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__)  _endthreadex ((unsigned) status);#else  _endthread ();#endif  /*   * Never reached.   */#if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__)  return (unsigned) status;#endif}				/* ptw32_threadStart */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡大黄网站免费看| 懂色av中文一区二区三区 | 久久精品亚洲乱码伦伦中文| 成人av在线网| 韩国av一区二区三区四区| 欧美电视剧在线看免费| jlzzjlzz国产精品久久| 国产成人免费av在线| 日韩成人免费电影| 免费在线成人网| 首页综合国产亚洲丝袜| 蜜臀av亚洲一区中文字幕| 六月丁香综合在线视频| 国产在线一区观看| av在线综合网| 欧美日韩在线播放三区四区| 日韩欧美一区二区免费| 国产精品蜜臀av| 热久久免费视频| 成a人片亚洲日本久久| 一本一本久久a久久精品综合麻豆| 欧洲视频一区二区| 久久蜜桃av一区二区天堂| 亚洲色欲色欲www| 极品少妇xxxx精品少妇偷拍| 99国产麻豆精品| 日韩亚洲欧美在线| 亚洲女性喷水在线观看一区| 日一区二区三区| 国产乱子轮精品视频| 国产成人在线视频播放| 在线看一区二区| 国产精品天天看| 国产精品资源在线观看| 3d成人动漫网站| 一区二区在线免费| 91浏览器在线视频| 中文字幕成人av| 九色|91porny| 欧美激情综合网| 高清beeg欧美| 亚洲欧美激情插| 欧美网站一区二区| 亚洲超丰满肉感bbw| 7777精品伊人久久久大香线蕉| 亚洲一区二区三区在线看| 一本久道久久综合中文字幕| 国产精品国产a级| 91在线观看污| 丝袜脚交一区二区| 久久综合国产精品| 国产成人高清视频| 亚洲啪啪综合av一区二区三区| 国产suv一区二区三区88区| 精品国产精品网麻豆系列| 天天操天天干天天综合网| 欧美不卡123| av在线一区二区三区| 午夜精品影院在线观看| 26uuu久久综合| 91美女蜜桃在线| 亚洲国产精品一区二区久久 | 国产高清亚洲一区| 国产精品日韩精品欧美在线| 99re8在线精品视频免费播放| 性欧美疯狂xxxxbbbb| 欧美成人猛片aaaaaaa| 国产麻豆一精品一av一免费| 国产精品欧美久久久久无广告 | 亚洲婷婷综合久久一本伊一区| 欧美日韩精品一区视频| 国产在线麻豆精品观看| 亚洲一区二区在线视频| 国产女人aaa级久久久级| 日韩欧美一区二区在线视频| 在线视频欧美精品| 国产成人精品一区二区三区四区| 日本麻豆一区二区三区视频| 亚洲欧美另类综合偷拍| 亚洲欧洲精品一区二区三区 | 国产一区二区女| 美腿丝袜亚洲色图| 蜜桃av一区二区三区| 亚洲国产综合色| 亚洲日本一区二区| 亚洲亚洲精品在线观看| 国产精品久久毛片a| 日韩精品一区二区三区老鸭窝| 在线精品视频小说1| 91免费观看视频在线| 色综合久久久久久久| 欧美日本不卡视频| 日韩精品中文字幕一区| 久久综合狠狠综合久久激情| 国产精品夫妻自拍| 亚洲色图欧美激情| 一级精品视频在线观看宜春院| 亚洲精品成人精品456| 亚洲免费av观看| 午夜私人影院久久久久| 看电影不卡的网站| 国产精品一区2区| www.综合网.com| 91国产免费观看| 久久久一区二区| 亚洲免费电影在线| 日本91福利区| 97精品久久久午夜一区二区三区 | 亚洲精品在线电影| 亚洲欧洲一区二区三区| 亚洲国产精品自拍| 国产精品自拍一区| 欧美色欧美亚洲另类二区| 日韩免费观看高清完整版在线观看| 国产日韩av一区二区| 亚洲精品视频在线观看网站| 麻豆久久一区二区| 欧美日韩一区视频| |精品福利一区二区三区| 久久99精品网久久| 欧美日韩日日骚| 1024成人网| 成人a级免费电影| 日韩精品一区国产麻豆| 一区二区三区国产豹纹内裤在线 | 一本大道综合伊人精品热热| 国产嫩草影院久久久久| 蜜臀av性久久久久av蜜臀妖精| 欧美性欧美巨大黑白大战| 国产精品全国免费观看高清| 国产真实乱对白精彩久久| 欧美久久久久免费| 午夜a成v人精品| 又紧又大又爽精品一区二区| 成人aaaa免费全部观看| 日本一区二区三区四区| 国产中文字幕精品| 久久精品视频免费| 日韩在线观看一区二区| 欧美性xxxxxx少妇| 亚洲国产成人av网| 日韩午夜电影在线观看| 精品一区二区三区香蕉蜜桃| 国产精品无人区| 91麻豆精品国产91久久久久久久久| 秋霞电影一区二区| 欧美韩国一区二区| 欧美日韩国产精选| 精品一区二区免费在线观看| 精品少妇一区二区三区在线播放 | 日本欧美韩国一区三区| 中文字幕第一区| 欧美体内she精视频| 久久99国产精品麻豆| 中文字幕欧美一| 欧美日韩亚洲另类| 国产一区二区在线观看免费| 久久久国产午夜精品| 欧美日本在线看| 不卡一区二区在线| 青草av.久久免费一区| 国产欧美日韩一区二区三区在线观看| www.欧美.com| 久久99久国产精品黄毛片色诱| 亚洲精品免费电影| 中文字幕在线一区免费| 日韩免费看网站| 欧美喷潮久久久xxxxx| 99久久精品免费看国产 | 国产99久久久国产精品免费看| 国产精品久久久久一区| 色综合久久久久久久久| 国产不卡高清在线观看视频| 麻豆国产欧美一区二区三区| 亚洲精品成人在线| 国产精品乱码人人做人人爱| 久久精品视频一区二区三区| 884aa四虎影成人精品一区| 色综合久久中文字幕综合网| 99精品黄色片免费大全| 成人av电影在线网| 成人av影院在线| voyeur盗摄精品| 91免费观看国产| 在线亚洲高清视频| 9191成人精品久久| 久久亚洲精华国产精华液 | 北条麻妃一区二区三区| 欧美日韩亚洲综合在线| 日本丰满少妇一区二区三区| 久久精品国产999大香线蕉| 亚洲欧洲日产国码二区| 午夜欧美2019年伦理| 国内精品嫩模私拍在线| av高清不卡在线| 日韩免费视频一区二区| 国产精品久久久久精k8| 日韩精品视频网| 成人激情黄色小说| 日韩美一区二区三区|