在開發(fā)C++程序時,一般在吞吐量、并發(fā)、實時性上有較高的要求。設計C++程序時,總結起來可以從如下幾點提高效率:
● l 并發(fā)
● l 異步
● l 緩存
下面將我平常工作中遇到一些問題例舉一二,其設計思想無非以上三點。
1任務隊列
1.1 以生產者-消費者模型設計任務隊列
生產者-消費者模型是人們非常熟悉的模型,比如在某個服務器程序中,當User數據被邏輯模塊修改后,就產生一個更新數據庫的任務(produce),投遞給IO模塊任務隊列,IO模塊從任務隊列中取出任務執(zhí)行sql操作(consume)。
設計通用的任務隊列,示例代碼如下:
詳細實現可參見:

推薦C語言C++學習交流群:231662552
務隊列使用技巧
1.2.1 IO 與 邏輯分離
比如網絡游戲服務器程序中,網絡模塊收到消息包,投遞給邏輯層后立即返回,繼續(xù)接受下一個消息包。邏輯線程在一個沒有io操作的環(huán)境下運行,以保障實時性。示例:

推薦C語言C++學習交流群:231662552??
注意,此模式下為單任務隊列,每個任務隊列單線程。
1.2.2 并行流水線
上面的只是完成了io 和 cpu運算的并行,而cpu中邏輯操作是串行的。在某些場合,cpu邏輯運算部分也可實現并行,如游戲中用戶A種菜和B種菜兩種操作是完全可以并行的,因為兩個操作沒有共享數據。最簡單的方式是A、B相關的操作被分配到不同的任務隊列中。示例如下:

推薦C語言C++學習交流群:231662552??? ?