原创 C++和雙重檢查鎖定模式(DCLP)的風險

多線程其實就是指兩個任務一前一後或者同時發生。 1 簡介 當你在網上搜索設計模式的相關資料時,你一定會找到最常被提及的一個模式:單例模式(Singleton)。然而,當你嘗試在項目中使用單例模式時,一定會遇到一個很重要的限制:

原创 ASIO學習

http://sites.google.com/site/polarisnotme/boost/asio/xue-xi-1 boost::asio::Io_service 構造函數 構造函數的主要動作就是調用Creat

原创 makefile文件的編寫

    簡單的說,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯,甚至可以在makefile中執行shell腳本。makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需

原创 [轉]兩種高性能I/O設計模式(Reactor/Proactor)的比較

[轉]兩種高性能I/O設計模式(Reactor/Proactor)的比較 【原文地址:http://www.cppblog.com/pansunyou/archive/2011/01/26/io_design_patterns.

原创 自旋鎖與互斥量

互斥量是阻塞鎖,當某線程無法獲取互斥量時,該線程會被直接掛起,該線程不再消耗CPU時間,當其他線程釋放互斥量後,操作系統會激活那個被掛起的線程,讓其投入運行。 兩種鎖適用於不同場景: 如果是多核處理器,如果預計線程等待鎖的時間很短,

原创 c++11 線程:讓你的多線程任務更輕鬆

介紹 本文旨在幫助有經驗的Win32程序員來了解c++ 11線程庫及同步對象 和 Win32線程及同步對象之間的區別和相似之處。 在Win32中,所有的同步對象句柄(HANDLE)是全局句柄.它們可以被共享,甚至可

原创 WIN32--線程睡眠

目的: 有時候我們想讓線程不被調度一定的時間,也就是說讓線程睡眠一段時間。 API 接口: 在 Win32中可以調用 Sleep,SleepEx 和 SwitchToThread 三個API。 VOID WINAPI Sleep

原创 用unordered_map代替hash_map

利用unordered_map代替hash_map 實驗環境 操作系統 fedora9編譯器版本 gcc4.3實驗方式 各種map使用插入和查找,比較速度和相關性能 下面測試說明了速度之間的比較:map類型 插入速度 插

原创 DMA

DMA部分我用到的相對簡單,當然,可能這是新東西,我暫時還用不到它的複雜功能吧。下面用問答的形式表達我的思路。 DMA有什麼用?        直接存儲器存取用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸。無須CPU

原创 服務器端預先創建子進程(work)同時監聽服務端口和驚羣現象

原文鏈接: http://blog.csdn.net/ordeder/article/details/21721141 1.進程A在n端口上監聽,即調用listen(listenfd,backlog); 2.之後A調用fork產生子

原创 linux基礎編程 多線程中的互斥鎖 pthread_mutex_lock

pthread_mutex.h頭文件 [cpp] view plaincopy #ifndef __SEM_UTIL_H__   #define __SEM_UTIL_H__      typedef void

原创 (找數組中唯一出現兩次的數)

<以下微軟面試題全來自網絡> <以下答案與分析純屬個人觀點,不足之處,還望不吝指出^_^> <版權所有,轉載不忘註明出處:http://blog.csdn.net/zhanxinhang> 題:假設你有一個用1001個整數組成

原创 互斥鎖與條件變量的配合!

互斥操作:  對共享資源的訪問, 要對互斥量進行加鎖, 如果互斥量已經上了鎖, 調用線程會阻塞, 直到互斥量被解鎖. 在完成了對共享資源的訪問後, 要對互斥量進行解鎖。    死鎖主要發生在有多個依賴鎖存在時, 會在一個線程試圖以與另一個

原创 linux select與poll的區別

 linux下面的poll與select的區別:poll與select本質上是一樣的,不同之處有如下: 1. 每個進程使用的select有最大連接數限制,只能有FD_SETSIZE個,而poll沒有這樣的限制(採用鏈表存儲); 弊端

原创 string::substr

std::string::substr string substr (size_t pos = 0, size_t len = npos) const; Generate substring Returns a newly con