请声明出处:http://blog.csdn.net/u012377333/article/details/45392379
yate的线程类:
/** * A thread is a separate execution context that exists in the same address * space. Threads make better use of multiple processor machines and allow * blocking one execution thread while allowing other to run. * 一个线程是一个独立的执行上下文, * 存在于相同的地址空间。线程更好地 * 利用多个处理器机器和允许阻止一个执行线程, * 同时允许其他运行。 * @short Thread support class * @short 线程支持类 */ class YATE_API Thread : public Runnable { friend class ThreadPrivate; friend class MutexPrivate; friend class SemaphorePrivate; YNOCOPY(Thread); // no automatic copies please public: /** * Running priorities, their mapping is operating system dependent * 优先级运行,其映射是依赖于操作系统的 */ enum Priority { Lowest, Low, Normal, High, Highest }; /** * This method is called when the current thread terminates. * 当前线程终止时调用此方法。 */ virtual void cleanup(); /** * Actually starts running the new thread which lingers after creation * 实际上开始运行后残留的新线程创建 * @return False if an error occured, true if started ok * @返回false,如果运行错误,true,如果启动成功 */ bool startup(); /** * Check if the thread creation failed * 检查线程是否创建失败 * @return True if an error occured, false if created ok * @返回false,如果运行错误,true,如果启动成功 */ bool error() const; /** * Check if the thread is running or not * 检查线程是否正在运行 * @return True if running, false if it has terminated or no startup called * @返回true,正在运行,false,线程结束或者还没有开始运行 */ bool running() const; /** * Count how many Yate mutexes are kept locked by this thread * 统计当期线程互斥锁的个数 * @return Number of Mutex locks held by this thread * @返回线程互斥锁的个数 */ inline int locks() const { return m_locks; } /** * Check if the thread is currently helding or attempting to lock a mutex * 检查当前互斥锁的个数或者正要锁的 * @return True if the current thread is in an unsafe to cancel state * @返回true,如果当前的线程在一个不安全的取消状态 */ inline bool locked() const { return m_locking || m_locks; } /** * Get the name of this thread * 获得这个线程的名称 * @return The pointer that was passed in the constructor * @返回构造函数的指针 */ const char* name() const; /** * Get the name of the currently running thread * 获得当前正在运行的线程名称 * @return The pointer that was passed in the thread's constructor * @返回构造函数的指针 */ static const char* currentName(); /** * Give up the currently running timeslice. Note that on some platforms * it also sleeps for the operating system's scheduler resolution * 放弃当前运行的时间片。请注意,在某些平台上 * 也睡操作系统调度器的决议 * @param exitCheck Terminate the thread if asked so * @参数exitCheck,如果线程正在被请求也结束 */ static void yield(bool exitCheck = false); /** * Sleep for a system dependent period adequate for an idle thread. * 睡眠系统依赖时间足够的空闲线程。 * On most operating systems this is a 5 msec sleep. * 在大多数操作系统这是一个5毫秒的睡眠。 * @param exitCheck Terminate the thread if asked so * @参数exitCheck,如果线程正在被请求也结束 */ static void idle(bool exitCheck = false); /** * Sleep for a number of seconds * 睡眠指定的秒数 * @param sec Number of seconds to sleep * @参数sec,要睡眠的秒数 * @param exitCheck Terminate the thread if asked so * @参数exitCheck,如果线程正在被请求也结束 */ static void sleep(unsigned int sec, bool exitCheck = false); /** * Sleep for a number of milliseconds * 睡眠指定的毫秒数 * @param msec Number of milliseconds to sleep * @参数msec,要睡眠的毫秒数 * @param exitCheck Terminate the thread if asked so * @参数exitCheck,如果线程正在被请求也结束 */ static void msleep(unsigned long msec, bool exitCheck = false); /** * Sleep for a number of microseconds * 睡眠指定的微秒数 * @param usec Number of microseconds to sleep, may be rounded to * milliseconds on some platforms * @参数usec,要睡眠的微秒数,在有些平台是微秒 * @param exitCheck Terminate the thread if asked so * @参数exitCheck,如果线程正在被请求也结束 */ static void usleep(unsigned long usec, bool exitCheck = false); /** * Get the platform dependent idle sleep interval in microseconds * 睡眠依赖于平台空闲间隔在微秒 * @return Number of microseconds each call to idle() will sleep * @返回的微秒每个调用闲置()将睡眠 */ static unsigned long idleUsec(); /** * Get the platform dependent idle sleep interval in milliseconds * 睡眠依赖于平台空闲间隔在毫秒 * @return Number of milliseconds each call to idle() will sleep * @返回的毫秒每个调用闲置()将睡眠 */ static unsigned long idleMsec(); /** * Set the idle sleep interval or reset to platform default * 设置空闲睡眠间隔或重置为默认平台 * @param msec Sleep interval in milliseconds, platform default if zero * @参数msec,睡眠时间间隔以毫秒为单位,平台默认如果零 */ static void idleMsec(unsigned long msec); /** * Get a pointer to the currently running thread * 获得当前运行的线程的指针 * @return A pointer to the current thread or NULL for the main thread * or threads created by other libraries * @返回当前线程或NULL指针主线程或其他库创建的线程 */ static Thread* current(); /** * Get the number of Yate created threads * 获得线程创建的个数 * @return Count of current Thread objects * @返回当先线程对象的计数 */ static int count(); /** * Check if the current thread was asked to terminate. * 核查当前的线程是否被要求结束 * @param exitNow If thread is marked as cancelled then terminate immediately * @参数exitNow,如果线程标记为取消,立即终止 * @return False if thread should continue running, true if it should stop */ static bool check(bool exitNow = true); /** * Terminates the current thread. * 结束当前的线程 */ static void exit(); /** * Terminates the specified thread. * 结束指定的线程 * @param hard Kill the thread the hard way rather than just setting an exit check marker * @参数hard,采用强硬的方式杀死线程而不仅仅是设置退出检查标记 */ void cancel(bool hard = false); /** * Check if this thread is the currently running thread * 见这个线程是不是正在运行的线程 * @return True if this is the current thread * @放回为true,是当前的线程 */ inline bool isCurrent() const { return current() == this; } /** * Get the object counter of this thread * 获得线程的对象计数 * @return Pointer to thread's counter for new objects * @返回指向线程的计数器为新对象 */ NamedCounter* getObjCounter() const; /** * Set the object counter of this thread * 设置线程的对象计数 * @param counter New counter object or NULL * @参数counter,新的对象或者NULL * @return Pointer to old counter object * @返回旧对象的计数 */ NamedCounter* setObjCounter(NamedCounter* counter); /** * Get the object counter of the current thread * 获得当前线程的对象计数 * @param always Return the object even if counting is disabled * @参数always,返回的对象即使计数是禁用的 * @return Pointer to current counter for new objects * @返回指针为新对象当前的计数器 */ static NamedCounter* getCurrentObjCounter(bool always = false); /** * Set the object counter of the current thread * 设置当前线程的对象计数 * @param counter New counter object or NULL * @参数counter,新的对象或者NULL * @return Pointer to old counter object * @返回旧对象的计数 */ static NamedCounter* setCurrentObjCounter(NamedCounter* counter); /** * Convert a priority name to a thread priority level * 转成线程的优先级的名称为级别 * @param name Name of the requested level * @参数name,别请求的级别名称 * @param defvalue Priority to return in case of an invalid name * @参数defvalue,如果是一个无效的名称返回默认值 * @return A thread priority level * @返回线程的优先级别 */ static Priority priority(const char* name, Priority defvalue = Normal); /** * Convert a priority level to a textual name * 转成线程的优先级的级别为文本名称 * @param prio Priority level to convert * @参数prio,要转换的优先级的级别 * @return Name of the level or NULL if an invalid argument was provided * @返回级别的名称或NULL如果一个无效的参数 */ static const char* priority(Priority prio); /** * Kills all other running threads. Ouch! * 杀死所有其他线程运行 * Must be called from the main thread or it does nothing. * 必须从主线程调用或什么也不执行。 */ static void killall(); /** * On some platforms this method kills all other running threads. * Must be called after fork() but before any exec*() call. */ static void preExec(); /** * Get the last thread error * @return The value returned by GetLastError() (on Windows) or * the value of C library 'errno' variable otherwise */ static int lastError(); /** * Get the last thread error's string from system. * 从系统获取最后的线程错误的信息 * @param buffer The destination string * @参数buffer,用于存放错误信息 * @return True if an error string was retrieved. If false is returned, the buffer * is filled with a generic string indicating an unknown error and its code * @返回true,错误信息被找到,false,未知的错误和错误码 * @缓冲区被通用的字符填满 */ static inline bool errorString(String& buffer) { return errorString(buffer,lastError()); } /** * Get an error string from system. * 从系统获取错误的信息 * On Windows the code parameter must be a code returned by GetLastError(). * 在windows系统时通过GetLastError()来获取的错误码 * Otherwise, the error code should be a valid value for the C library 'errno' * 此外,都是通过c库的errno错误码 * variable * @param buffer The destination string * @参数buffer,用于存放错误信息 * @param code The error code * @参数code,用于存放错误码 * @return True if an error string was retrieved. If false is returned, the buffer * is filled with a generic string indicating an unknown error and its code * @返回true,错误信息被找到,false,未知的错误和错误码 * @缓冲区被通用的字符填满 */ static bool errorString(String& buffer, int code); protected: /** * Creates and starts a new thread 创建和启动一个新的线程 * @param name Static name of the thread (for debugging purpose only) * @参数name,静态的线程名(仅用于调试) * @param prio Thread priority * @参数prio,线程运行的优先级 */ Thread(const char *name = 0, Priority prio = Normal); /** * Creates and starts a new thread * 创建和启动一个新的线程 * @param name Static name of the thread (for debugging purpose only) * @参数name,静态的线程名(仅用于调试) * @param prio Thread priority level name * @参数prio,线程运行的优先级 */ Thread(const char *name, const char* prio); /** * The destructor is called when the thread terminates * 当这个线程结束的时候调用这个析构函数 */ virtual ~Thread(); private: ThreadPrivate* m_private; int m_locks; bool m_locking; };