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

📄 pthread.cpp

📁 日志类封装日志类封装日志类封装日志类封装日志类封装日志类封装
💻 CPP
字号:
/*============================================================================. | Copyright (C) 2006 Gareth Buxton                                           | |----------------------------------------------------------------------------| | LogPlusPlus 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.1 of the License, or (at your option) any later version.         | |                                                                            | | LogPlusPlus 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; if not, write to the Free Software        | | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | '============================================================================*/#include <liblpp/PThread.h>//=============================================================================LPP_NAMESPACE_BEGIN//=============================================================================static const pthread_cond_t COND_INITIALIZER = PTHREAD_COND_INITIALIZER;static const pthread_mutex_t MUTEX_INITIALIZER = PTHREAD_MUTEX_INITIALIZER;PThread::PThread(): Thread(), cond(COND_INITIALIZER), mutex(MUTEX_INITIALIZER), id(0){}PThread::PThread(Runnable& runnable): Thread(runnable), cond(COND_INITIALIZER), mutex(MUTEX_INITIALIZER), id(0){}PThread::~PThread(){}void PThread::lock(){//	std::cout << "LogThreadP::lock()" << std::endl;	pthread_mutex_lock(&mutex);//	std::cout << "done" << std::endl;}void PThread::unlock(){//	std::cout << "LogThreadP::unlock()" << std::endl;	pthread_mutex_unlock(&mutex);//	std::cout << "done" << std::endl;}void PThread::yield(){//	std::cout << "LogThreadP::yield()" << std::endl;	pthread_yield();//	std::cout << "done" << std::endl;}void PThread::join(){//	std::cout << "LogThreadP::join()" << std::endl;	pthread_join(thread, 0);//	std::cout << "done" << std::endl;}void PThread::wait(){//	std::cout << "LogThreadP::wait()" << std::endl;	pthread_cond_wait(&cond, &mutex);//	std::cout << "done" << std::endl;}void PThread::signal(){//	std::cout << "LogThreadP::signal()" << std::endl;	pthread_cond_signal(&cond);//	std::cout << "done" << std::endl;}/** * Separate thread method to call Log.startThread() * without the ThreadCallP.start() method blocking. **/void* startPThread(void* data){	((PThread*) data)->run(); // block	return (void*) 0;}void PThread::start(){//	handle = pthread_create(&handle, &pthread_attr, startPThread, this);	id = pthread_create(&thread, NULL, startPThread, this);	pthread_yield();}void PThread::stop(){	runnable.end();}Thread* PThreadMill::create(Runnable& runnable) const{	return new PThread(runnable);}//PThread::PThread()//{//}////PThread::~PThread()//{//}//=============================================================================LPP_NAMESPACE_END//=============================================================================

⌨️ 快捷键说明

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