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