c 程式設計師修煉真經之三

2021-04-16 22:32:55 字數 2083 閱讀 6405

談一下跨平台網路通訊應用程式的設計,第一種呢就是用預編譯巨集,在不同的巨集定義下包含不同的標頭檔案,呼叫不同的函式,這個麻煩了點,但好處是直截了當,除錯方便,哪兒個步驟出來問題了然於胸,第二種呢就是用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 隨著新的技術 語言及環境的出現,你的知識可能會變得過時。不斷變化的市場驅動也許會使你的經驗變得陳舊或無關緊要。隨著你的知識的價值降低,對你的公司或者你的客戶來說,你的...