re: 心情:日夜的混亂 冷鋒 2012-02-24 09:44
同時(shí)敲object-c跟C++才崩潰啊!
re: 發(fā)個(gè)招聘信息 冷鋒 2012-02-07 09:26
系統(tǒng)架構(gòu)師才20W?
re: 武俠二源碼分析 冷鋒 2012-01-17 14:15
求源碼下載地址。
我用的epoll ET模式,我的recv跟你一樣,但是Send的有點(diǎn)區(qū)別,我是在邏輯線程里面嘗試直接發(fā)送,先判斷下發(fā)送隊(duì)列是否為空,如果為空的話那么直接發(fā)送,當(dāng)然這里可能遇到發(fā)不完的情況,因此要記錄下發(fā)送的位置,然后丟到發(fā)送隊(duì)列中,IO線程里面,在可寫事件到來時(shí)去檢查隊(duì)列并發(fā)送隊(duì)列的數(shù)據(jù)。
PS:
IO線程通知邏輯線程我是通過條件變量,有點(diǎn)好奇你在邏輯線程是怎么通知IO線程的,IO線程應(yīng)該已經(jīng)在epoll_wait了,你是弄了個(gè)管道什么的嗎?像memcached那樣的做法。
很好奇這些商業(yè)性質(zhì)的源碼是怎么拿到的,是內(nèi)部員工泄露的嗎?那還能連上服務(wù)器?
windows是作為敲代碼的平臺(tái)吧,開發(fā)已經(jīng)包括了編譯調(diào)試了。我是在VS下配合代碼助手寫代碼,磁盤映射linux下的目錄到win下,這樣就可以方便地編輯調(diào)試了,VS下要禁用掉自動(dòng)把文件轉(zhuǎn)成DOS的,在保存菜單的高級(jí)選項(xiàng)里。
文檔里面是這么寫的:the return value will be 0 when the peer has performed an orderly shutdown.難道還有其他情況recv會(huì)返回0的嗎?除非文檔有問題。如果你是用的阻塞式的socket,buffer有限,會(huì)一直被阻塞,如果是非阻塞的話,那么肯定會(huì)返回<0吧,然后檢查errno==EAGAIN,說明緩沖器已經(jīng)沒有東西可讀了@笨笨
man recv顯示返回值是-1或者>=0的數(shù),只有=-1才是錯(cuò)誤發(fā)生,只有錯(cuò)誤發(fā)生了errno才會(huì)被修改才是有效的吧,你在=0的時(shí)候取errno去判斷是有問題的,對(duì)方發(fā)fin包過來,我方會(huì)收到可讀通知,然后recv就會(huì)收到0,就說明對(duì)方關(guān)閉連接了啊@笨笨
一般是發(fā)生錯(cuò)誤才需要檢查errno的吧,發(fā)生錯(cuò)誤了errno就被修改了,具體看man手冊(cè),為啥會(huì)要在errno沒有被改也即沒有發(fā)生錯(cuò)誤的情況下檢查errno呢?
re: 服務(wù)器多線程方案的選擇 冷鋒 2011-11-25 22:01
如果玩家同時(shí)發(fā)兩個(gè)消息給服務(wù)端,前一個(gè)是需要操作數(shù)據(jù)庫(kù)的,假如應(yīng)用服務(wù)器跟數(shù)據(jù)庫(kù)服務(wù)器之間是用異步回調(diào)方式通信的,那么在應(yīng)用服務(wù)器要怎么保證返回給客戶端的是順序的呢?@Todd
b.新的用戶來了,還是用100,就會(huì)把本該發(fā)給用戶A的發(fā)給用戶B了,不過這個(gè)可以自己維護(hù)一個(gè)session ID搞定,c實(shí)時(shí)send的話如果發(fā)不完得有個(gè)緩沖區(qū)延遲到下次再發(fā),由于主線程跟邏輯線程都在操作同一個(gè)fd,所以要加鎖,除非你把fd分給邏輯線程單獨(dú)維護(hù),負(fù)責(zé)它的讀寫,我已經(jīng)按照1a實(shí)現(xiàn)服務(wù)器的邏輯層了,你說的session是線程池還是全局的一個(gè)表?我這邊事維護(hù)了一個(gè)全局的connection的表@zuhd
re: 服務(wù)器多線程方案的選擇 冷鋒 2011-11-21 09:57
假如需要異步訪問數(shù)據(jù)庫(kù)的話怎么來保證順序呢,由客戶端來保證嗎?一定要前一個(gè)請(qǐng)求返回了才發(fā)送下一個(gè)請(qǐng)求?假如是寫游戲服務(wù)器的話呢?@yanxinmeng
re: 服務(wù)器多線程方案的選擇 冷鋒 2011-11-21 08:48
我說的是非阻塞的多線程啊,單線程的話如果要操作數(shù)據(jù)庫(kù)的話怎么辦?@一念天堂
re: 我的編輯器 0.80 冷鋒 2011-11-04 10:44
有點(diǎn)好奇,在全職工作期間(非上班時(shí)間)開發(fā)的產(chǎn)品到底算是公司的還是個(gè)人的,好像合同上寫著是全部屬于公司的額。
有沒有考慮對(duì)多點(diǎn)觸摸的支持呢?
剛發(fā)現(xiàn)有這種函數(shù),不過我是在應(yīng)用層做的,主要是要轉(zhuǎn)義文件名中的單引號(hào),覺得比較簡(jiǎn)單,就自己寫了個(gè)。@zuhd
re: vc定時(shí)提醒小工具 冷鋒 2011-08-15 10:40
無圖無真相啊