//介面定義
//同步物件介面
inte***ce ithreadlock
;//執行緒介面
inte***ce iservicethread
;//臨界區同步類
class com_service_class cthreadlock : public ithreadlock
//析構函式
inline ~cthreadlock()
//功能函式
public:
//鎖定函式
virtual inline void lock()
//解鎖函式
virtual inline void unlock()
};//安全同步鎖定控制代碼
class com_service_class cthreadlockhandle
};//執行緒物件類
class com_service_class cservicethread : public iservicethread
//獲取控制代碼
handle getthreadhandle()
//投遞訊息
bool postthreadmessage(uint umessage, wparam wparam, lparam lparam);
//事件函式
private:
//開始事件
virtual bool onthreadstratevent()
//停止事件
virtual bool onthreadstopevent()
//內部函式
private:
//執行函式
virtual bool repetitionrun()=null;
//執行緒函式
static unsigned __stdcall threadfunction(lpvoid pthreaddata);
};#endif
//結構定義
//啟動引數
struct tagthreadparameter
;//************************************
// description: 建構函式
//************************************
cthreadlockhandle::cthreadlockhandle(ithreadlock * pithreadlock, bool bautolock)
//************************************
// description: 析構函式
//************************************
cthreadlockhandle::~cthreadlockhandle()
//************************************
// description: 鎖定函式
//// returns: void
//************************************
void cthreadlockhandle::lock()
//************************************
// description: 解鎖函式
//// returns: void
//************************************
void cthreadlockhandle::unlock()
//************************************
// description: 建構函式
//************************************
cservicethread::cservicethread(void)
//************************************
// description: 析構函式
//************************************
cservicethread::~cservicethread(void)
//************************************
// description: 狀態判斷
//// returns: bool
//************************************
bool cservicethread::isruning()
return false;
}//************************************
// description: 啟動執行緒
//// returns: bool
//************************************
bool cservicethread::startthead()
//構造引數
tagthreadparameter threadparameter;
threadparameter.bsuccess=false;
threadparameter.m_pservicethread=this;
threadparameter.heventfinish=createevent(null,false,false,null);
if (threadparameter.heventfinish==null) return false;
//啟動執行緒
m_brun=true;
m_hthreadhandle=(handle)::_beginthreadex(null,0,threadfunction,&threadparameter,0,&m_uthreadid);
//等待事件
waitforsingleobject(threadparameter.heventfinish,infinite);
//關閉事件
closehandle(threadparameter.heventfinish);
//判斷錯誤
if (threadparameter.bsuccess==false)
return true;
}//************************************
// description: 停止執行緒
// parameters:
// dword dwwaitseconds
//// returns: bool
//************************************
bool cservicethread::stopthread(dword dwwaitseconds)
//設定變數
if (m_hthreadhandle!=null)
return true;
}//************************************
// description: 中止執行緒
// parameters:
// dword dwexitcode
//// returns: bool
//************************************
bool cservicethread::terminatethread(dword dwexitcode)
//設定變數
if (m_hthreadhandle!=null)
return true;
}//************************************
// description: 投遞訊息
// parameters:
// uint umessage
// wparam wparam
// lparam lparam
//// returns: bool
//************************************
bool cservicethread::postthreadmessage(uint umessage, wparam wparam, lparam lparam)
//************************************
// description: 執行緒函式
// parameters:
// lpvoid pthreaddata
//// returns: unsigned __stdcall
//************************************
unsigned __stdcall cservicethread::threadfunction(lpvoid pthreaddata)
catch (...)
//設定事件
bool bsuccess=pthreadparameter->bsuccess;
_assert(pthreadparameter->heventfinish!=null);
setevent(pthreadparameter->heventfinish);
//執行執行緒
if (bsuccess==true)
catch (...) {}}}
//停止事件
try
catch (...)
//中止執行緒
_endthreadex(0);
return 0;
}
乙個遊戲框架
最近一段時間不是很忙,就寫了乙個自己的遊戲伺服器框架雛形,很多地方還不夠完善,但是基本上也算是能夠跑起來了。我先從上層結構說起,一直到實現細節吧,想起什麼就寫什麼。第一部分 伺服器邏輯 伺服器這邊簡單的分為三個部分,客戶端的連線首先到達閘道器伺服器,閘道器這裡有個執行緒用來監聽來自與客戶端的連線,然...
開源乙個網路框架
前面有幾篇文章介紹過乙個基於linux epoll的網路介面,但並未將介面組合成乙個方便使用的網路框架。下面先簡單介紹下以前發布過的網路介面 首先是基本介面 kendynet.h kendynet.c 此介面提供了最簡單的單執行緒網路收發模型,並未提供封包解包等功能,使用者可在此之上根據自己的需求封...
我們一起來動手開發乙個Orm框架,開源發布
我們追求的方向 1 高效能.2 易用性強 我想,用過moon.orm的應該可以知道這點.配置簡單,智慧型感知,生成器的輔助,會sql就可使用之.3 多資料庫多資料來源支援 在同乙個專案中我們常常需要處理這些情況時.目前moon的目標,支援sqlserver sqlite oracle mysql p...