談一下跨平台網路通訊應用程式的設計,第一種呢就是用預編譯巨集,在不同的巨集定義下包含不同的標頭檔案,呼叫不同的函式,這個麻煩了點,但好處是直截了當,除錯方便,哪兒個步驟出來問題了然於胸,第二種呢就是用apr啦,標頭檔案呢應該是象這樣
#include
#include
#include
#include
#include
#include
#include
#include
#include
#if ( uni_current_system == 2 )
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#endif
然後就去調裡面的東西吧,
比如說調
apr_initialize() ;
第三種呢就是用ace,不過這個東西可是門檻不低啊,
第四種呢用asio,在boost_1_35_0中包含進去了,boost_1_34_1中還沒有需要單獨加進去
好了,我們今天要實現的專案問題中要用到ace還要實現乙個優先佇列的機制,請注意我的目的不是要演示我的
優先佇列設計的有多麼好,而是要告訴你ace_time_value設定不當會搞死你的cpu哦!
// **sprioritymessagequeue.h: inte***ce for the **sprioritymessagequeue class.
////
#if !defined(afx_**sprioritymessagequeue_h__553e9667_5e4d_46d0_af52_c340aa5229f2__included_)
#define afx_**sprioritymessagequeue_h__553e9667_5e4d_46d0_af52_c340aa5229f2__included_
#if _msc_ver > 1000
#pragma once
#endif // _msc_ver > 1000
#include "ace/os.h"
#include "ace/synch.h"
#include "ace/basic_types.h"
#include "ace/message_queue.h"
class ace_time_value;
class msghandledata;
#define disallow_evil_constructors(typename) /
typename(const typename&); /
typename& operator=(const typename&)
class **sprioritymessagequeue
;#endif // !defined(afx_**sprioritymessagequeue_h__553e9667_5e4d_46d0_af52_c340aa5229f2__included_)
這是我的標頭檔案,內含了兩個ace_message_queue,乙個是普通佇列,乙個是優先佇列
ok,現在看實現一(有問題),
int **sprioritymessagequeue::dequeue(ace_message_block *& mb, ace_time_value *tv)
}return 0;
然後你執行,哇,機器好慢啊,仔細一看cpu97%--100%了,為什麼會出現這種情況呢?把tv的預設值加大再試一
試,還是不行,怎麼辦呢?
實現二(正確)
int **sprioritymessagequeue::dequeue(ace_message_block *& mb, ace_time_value *tv)
}if(mb== 0)
return 0;
}執行一看,風平浪靜了吧
c 程式設計師修煉真經
class bb public aa virtual void print virtual void print 2.巨集替換,各種陷阱從此開始 define n 3 define y n n 1 n int ny y 5 1 大家可以測一下,ny等於多少 二.來點更常用的的 1.寫乙個itoa t...
c 程式設計師修煉真經之五
我們開始乙個專案時通常都會做些什麼呢?1.判斷本程式是否已經有例項在執行 bool ispigrun else 2.設定當前程式執行路徑 char path config max path path config 0 getmodulefilename null,path config,max pa...
程式設計師修煉之道 三
一 你的知識資產 在程式設計師的職業生涯中,知識和經驗是你重要的職業財富。遺憾的是,它們是有時效的資產 expiring asset 隨著新的技術 語言及環境的出現,你的知識可能會變得過時。不斷變化的市場驅動也許會使你的經驗變得陳舊或無關緊要。隨著你的知識的價值降低,對你的公司或者你的客戶來說,你的...