乙個C 遊戲框架開源專案部分原始碼(僅供分享)

2021-05-12 15:37:49 字數 4804 閱讀 1323

//介面定義

//同步物件介面

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...