原文:C++11實現一個自動注冊的工廠

實現動機 工廠方法是最簡單地創建派生類對象的方法,也是很常用的,工廠方法內部使用switch case根據不同的key去創建不同的派生類對象,下面是一個偽代碼。 隨着時間的流逝,消息種類越來越多,這個switch case會越來越長,我在一個開源項目中看到過一百多個case語句,顯然這種簡單工廠已經不堪負荷,這樣的代碼對於維護者來說也是一個噩夢。要消除這些長長的switch case語句是一個需要 ...

2015-12-30 21:51 9 6756 推薦指數:

查看詳情

C++11實現一個有界的阻塞隊列

對於一個無界的阻塞隊列而言,其實現非常簡單,即用一個鎖(鎖隊列)+ 一個條件變量(判空)即可。那么對於一個有界阻塞隊列而言,其隊列的容量有上限,其實只要再加一個條件變量用來判斷是否滿即可。 綜上,我們需要 mutex: 保護隊列的讀寫操作 notEmptyCV: 條件變量,在take時 ...

Mon Aug 27 19:42:00 CST 2018 0 1095
使用C++11實現一個半同步半異步線程池

前言 C++11之前我們使用線程需要系統提供API、posix線程庫或者使用boost提供的線程庫,C++11后就加入了跨平台的線程類std::thread,線程同步相關類std::mutex、std::lock_guard、std::condition_variable、std ...

Sun Oct 23 16:31:00 CST 2016 0 2769
c++11 - unique_ptr的一個實現

在單位寫代碼沒法用c++11,為了方便寫代碼,今天趁着空閑時間寫了個unique_ptr的簡單實現 測試代碼 [NEWOBJ][Obj] this =00000000002C7D20 nMyMem= 100 ...

Fri Aug 26 04:30:00 CST 2016 0 2267
c++11實現一個簡單的lexical_cast

  boost中有一個lexical_cast可以用統一的方式來做基本類型之間的轉換,比如字符串到數字,數字到字符串,bool和字符串及數字之間的相互轉換。boost::lexical_cast的用法比較簡單: View Code   c++11中缺少 ...

Fri May 29 05:48:00 CST 2015 0 2802
C++11實現一個輕量級的AOP框架

AOP介紹   AOP(Aspect-Oriented Programming,面向方面編程),可以解決面向對象編程中的一些問題,是OOP的一種有益補充。面向對象編程中的繼承是一種從上而下的關系,不 ...

Mon Aug 31 18:13:00 CST 2015 6 5052
c++11 閉包的實現

c++11 閉包的實現 什么是閉包 閉包有很多種定義,一種說法是,閉包是帶有上下文的函數。說白了,就是有狀態的函數。更直接一些,不就是個類嗎?換了個名字而已。 一個函數,帶上了一個狀態,就變成了閉包了。那什么叫 “帶上狀態” 呢? 意思是這個閉包有屬於自己的變量,這些個變量的值是創建閉包 ...

Mon Nov 06 03:11:00 CST 2017 1 7894
c++11 tuple實現

實現一個簡易版的c++11 tuple。 我使用的編譯器是gcc,codeblocks13.12自帶的,哪個版本我不熟gcc也沒去查。 大致看了下他家的tuple實現,多繼承,tuple之上還有2個輔助類,走的是類似loki中GenScatterHierarchy的路子。1092行代碼,不是蓋 ...

Sat Mar 01 13:17:00 CST 2014 8 4096
C++11 自動釋放鎖(轉)

原文轉自 https://blog.csdn.net/lmb1612977696/article/details/77712170 c++11加入了很多新的特性,值得我們去探索。 先看一個例子:普通的、不能自動的釋放自己的鎖 借助對象的析構函數自動調用的原理 ...

Wed Nov 14 19:21:00 CST 2018 0 661
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM