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

📄 thread.h

📁 功能非常强的写日志程序
💻 H
字号:
/* * Copyright 2003,2004 The Apache Software Foundation. *  * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _LOG4CXX_HELPERS_THREAD_H#define _LOG4CXX_HELPERS_THREAD_H#include <log4cxx/config.h>#include <log4cxx/helpers/object.h>#include <log4cxx/helpers/objectptr.h>#include <log4cxx/helpers/objectimpl.h>#include <log4cxx/helpers/exception.h>#include <log4cxx/mdc.h>// Windows specific :// winspool.h defines MIN_PRIORITY and MAX_PRIORITY#ifdef MIN_PRIORITY#define OLD_MIN_PRIORITY MIN_PRIORITY#undef MIN_PRIORITY#endif#ifdef MAX_PRIORITY#define OLD_MAX_PRIORITY MAX_PRIORITY#undef MAX_PRIORITY#endifnamespace log4cxx{	namespace helpers	{		class LOG4CXX_EXPORT ThreadException : public Exception		{		};		class LOG4CXX_EXPORT InterruptedException : public Exception		{		};				/** The Runnable interface should be implemented by any class whose 		instances are intended to be executed by a thread. 		The class must define a method of no arguments called run.		*/		class LOG4CXX_EXPORT Runnable : public virtual Object		{		public:			DECLARE_ABSTRACT_LOG4CXX_OBJECT(Runnable)			/** When an object implementing interface Runnable is used to			create a thread, starting the thread causes the object's run 			method to be called in that separately executing thread.			*/			virtual void run() = 0;		};		typedef ObjectPtrT<Runnable> RunnablePtr;				/** A thread is a thread of execution in a program.		*/		class LOG4CXX_EXPORT Thread : public virtual ObjectImpl		{		public:			DECLARE_ABSTRACT_LOG4CXX_OBJECT(Thread)			BEGIN_LOG4CXX_CAST_MAP()				LOG4CXX_CAST_ENTRY(Thread)			END_LOG4CXX_CAST_MAP()			/**  Allocates a new Thread object.*/			Thread();						/**  Allocates a new Thread object.*/			Thread(RunnablePtr runnable);						virtual ~Thread();			/** Returns the current thread identifier			*/			static unsigned long getCurrentThreadId();			/** Causes the currently executing thread to sleep (temporarily			cease execution) for the specified number of milliseconds.			*/			static void sleep(long millis);			/** Causes this thread to begin execution;			calls the run method of this thread.			*/			void start();			/**  If this thread was constructed using a separate Runnable			run object, then that Runnable object's run method is called;			otherwise, this method does nothing and returns.			*/			virtual void run();			/** Waits for this thread to die.			*/			void join();			enum			{				MIN_PRIORITY = 1,				NORM_PRIORITY = 2,				MAX_PRIORITY = 3 			};			/** Changes the priority of this thread.			*/			void setPriority(int newPriority);			/**			Atomic increment			*/			static long InterlockedIncrement(volatile long * val);			/**			Atomic decrement			*/			static long InterlockedDecrement(volatile long * val);				protected:			/** Thread descriptor */#ifdef HAVE_PTHREAD			pthread_t thread;#elif defined(HAVE_MS_THREAD)			void * thread;#endif			RunnablePtr runnable;			MDC::Map parentMDCMap;		};				typedef ObjectPtrT<Thread> ThreadPtr;		}  // namespace helpers}; //namespace log4cxx#endif // _LOG4CXX_HELPERS_THREAD_H

⌨️ 快捷键说明

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