⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thread.h

📁 安装 H323需要的pwlib库
💻 H
字号:
/* * thread.h * * Thread of execution control class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: thread.h,v $ * Revision 1.38  2004/07/11 07:56:36  csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.37  2004/05/02 18:00:02  ykiryanov * Made unblock pipe public for BeOS * * Revision 1.36  2004/05/02 17:49:15  ykiryanov * Changed name of unblock pipe for BeOS to make compatible with socket code * * Revision 1.35  2004/04/18 00:27:32  ykiryanov * Added variable to count thread suspends. Removed thread name * * Revision 1.34  2004/04/03 15:50:30  ykiryanov * Changed names to easily distinguish class members. Added PThread name * * Revision 1.33  2004/04/02 03:42:07  ykiryanov * Added unblockPipe to improve code * * Revision 1.32  2003/09/17 01:18:03  csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.31  2002/11/02 00:32:21  robertj * Further fixes to VxWorks (Tornado) port, thanks Andreas Sikkema. * * Revision 1.30  2002/10/10 04:43:44  robertj * VxWorks port, thanks Martijn Roest * * Revision 1.29  2002/10/05 05:22:43  robertj * Fixed adding GetThreadId() function. * * Revision 1.28  2002/10/04 04:33:44  robertj * Added functions for getting operating system thread identifer values. * * Revision 1.27  2002/09/16 01:08:59  robertj * Added #define so can select if #pragma interface/implementation is used on *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.26  2001/09/18 05:56:03  robertj * Fixed numerous problems with thread suspend/resume and signals handling. * * Revision 1.25  2001/09/10 03:02:41  robertj * Major change to fix problem with error codes being corrupted in a *   PChannel when have simultaneous reads and writes in threads. * Changed threading so does not actually start thread until Resume(), makes *   the logic of start up much simpler and more portable. * Quite a bit of tidyin up of the pthreads code. * * Revision 1.24  2001/08/11 07:57:30  rogerh * Add Mac OS Carbon changes from John Woods <jfw@jfwhome.funhouse.com> * * Revision 1.23  2001/07/09 04:26:08  yurik * Fixed lack of pthread_self function on BeOS * * Revision 1.22  2001/05/23 00:18:55  robertj * Added support for real time threads, thanks Erland Lewin. * * Revision 1.21  2001/05/22 12:49:32  robertj * Did some seriously wierd rewrite of platform headers to eliminate the *   stupid GNU compiler warning about braces not matching. * * Revision 1.20  2001/03/20 06:44:25  robertj * Lots of changes to fix the problems with terminating threads that are I/O *   blocked, especially when doing orderly shutdown of service via SIGTERM. * * Revision 1.19  2001/02/25 19:40:35  rogerh * Add a suspend Semaphore for MAC OS threads started as 'suspended' * * Revision 1.18  2000/10/31 08:07:28  rogerh * Use proper return type for PX_GetThreadID * * Revision 1.17  2000/03/17 03:46:32  craigs * Removed spurious stuff for PThread implementation * * Revision 1.16  1999/10/30 13:45:02  craigs * Added pipe to thread to allow asynchronous abort of socket operations * * Revision 1.15  1999/09/03 02:26:25  robertj * Changes to aid in breaking I/O locks on thread termination. Still needs more work esp in BSD! * * Revision 1.14  1999/03/02 05:41:58  robertj * More BeOS changes * * Revision 1.13  1999/01/12 11:22:19  robertj * Removed redundent variable, is in common. * * Revision 1.12  1999/01/09 03:35:52  robertj * Fixed problem with closing thread waiting on semaphore. * * Revision 1.11  1998/11/30 22:07:23  robertj * New directory structure. * * Revision 1.10  1998/09/24 04:12:03  robertj * Added open software license. * * Revision 1.9  1998/01/03 23:06:32  craigs * Added PThread support * * Revision 1.8  1997/04/22 11:00:44  craigs * Added FreeStack function * * Revision 1.7  1996/12/30 03:23:52  robertj * Added timeout to block on child process function. * * Revision 1.6  1996/08/03 12:09:51  craigs * Changed for new common directories * * Revision 1.5  1996/04/15 10:50:48  craigs * Last revision prior to release of MibMaster * * Revision 1.4  1996/01/26 11:08:45  craigs * Fixed problem with blocking Accept calls * * Revision 1.3  1995/12/08 13:16:38  craigs * Added semaphore include and friend class * * Revision 1.2  1995/07/09 00:35:00  craigs * Latest and greatest omnibus change * * Revision 1.1  1995/01/23 18:43:27  craigs * Initial revision * * Revision 1.1  1994/04/12  08:31:05  robertj * Initial revision * *////////////////////////////////////////////////////////////////////////////////// PThread  public:    int PXBlockOnChildTerminate(int pid, const PTimeInterval & timeout);    int PXBlockOnIO(int handle,                    int type,                   const PTimeInterval & timeout);    void PXAbortBlock() const;#ifdef P_PTHREADS  public:#ifndef P_HAS_SEMAPHORES    void PXSetWaitingSemaphore(PSemaphore * sem);#endif  protected:    static void * PX_ThreadStart(void *);    static void PX_ThreadEnd(void *);    PINDEX          PX_origStackSize;    Priority        PX_priority;    pthread_t       PX_threadId;    pthread_mutex_t PX_suspendMutex;    int             PX_suspendCount;    BOOL            PX_firstTimeStart;#ifndef P_HAS_SEMAPHORES    PSemaphore    * PX_waitingSemaphore;    pthread_mutex_t PX_WaitSemMutex;#endif    int unblockPipe[2];    friend class PSocket;    friend void PX_SuspendSignalHandler(int);#elif defined(__BEOS__)  protected:    static int32 ThreadFunction(void * threadPtr);    thread_id mId;    int32 mPriority;    PINDEX mStackSize;    int32 mSuspendCount;  public:    int unblockPipe[2];#elif defined(P_MAC_MPTHREADS)  public:    void PXSetWaitingSemaphore(PSemaphore * sem);    //void InitialiseProcessThread();    static long PX_ThreadStart(void *);    static void PX_ThreadEnd(void *);    MPTaskID    PX_GetThreadId() const;  protected:    void PX_NewThread(BOOL startSuspended);    PINDEX     PX_origStackSize;    int        PX_suspendCount;    PSemaphore *suspend_semaphore;    long       PX_signature;    enum { kMPThreadSig = 'THRD', kMPDeadSig = 'DEAD'};    MPTaskID   PX_threadId;    MPSemaphoreID PX_suspendMutex;    int unblockPipe[2];    friend class PSocket;#elif defined(VX_TASKS)  public:    SEM_ID syncPoint;    static void Trace(PThreadIdentifer threadId = 0);  private:    static int ThreadFunction(void * threadPtr);    long PX_threadId;    int priority;    PINDEX originalStackSize;#endif// End Of File ////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -