原创 PCI 預取和非預取內存映射

博主在學習PCI 手冊時遇到這兩概念,查閱http://blog.csdn.net/ykqnjust/article/details/6236389該博文時,學習了下。自己的總結如下: 1)PCI設置PCIBARx[3]來配置該

原创 卡特蘭序列

在學習到數據結構-棧的時候,遇到棧的棧混洗情況,對於棧中n個元素,存在的情況爲Catalan數 在組合數學中發現卡特蘭數是怎麼來的: 首先看一個題目: 對於n個-1和n個+1組成的2n個序列,a1,a2,….,a2n; 滿足

原创 #define與typedef的區別

1.typedef就是類型定義,比如你給一個已經存在的類型(基本類型或者組合類型?)一個別名, 作用:1)簡化複雜類型的聲明,在常用的地方帶上一大串類型名,顯得太冗餘,爲了圖方便,用個簡單的名稱代替: typedef bool

原创 多線程學習1

因爲項目需要學習多線程,從最基本的概念學起: 進程:就是正在運行的應用程序;抽象的講,進程是一些所有權的集合,擁有自己的內存、CPU運行時間等一系列資源,爲線程運行提供必要環境。每個進程都有自己的地址空間和動態分配的內存以及文件

原创 CloseHandle

1.爲啥要在創建Handle後立馬關閉; 首先我們都是在創建線程賦給一個句柄,然後立馬結束句柄; 這是爲啥? 1.線程和線程句柄不是一個東西,線程是在CPU上運行的,線程句柄是一個內核對象。我們可以通過句柄來操作線程;但是其生

原创 線程間通信

1.線程間的通信主要涉及4個問題: 1)線程間如何傳遞信息; 2)線程之間如何同步,以使一個線程的活動不會破壞另一個線程的活動,以保證計算結果的正確性; 3)當線程之間存在依賴關係,如何調度線程的處理順序; 4)如何避免死鎖; 四

原创 多進程間的互斥對象通信

代碼程序進程1: #include<iostream> #include <Windows.h> #include <process.h>//使用進程 using namespace std; HANDLE hMutex;//定義一個句

原创 大整數乘法

“` //大整數乘法 u=x*10^m+y; v=w*10^m+z; uv=xw*10^2m+(xz+wy)*10^m+yz; 大整數乘法1: large_integer Prod(large_integer u,large_int

原创 ExitThread

ExitThread調用後就會釋放系統分配的堆棧,結束線程,如果線程是進程中最後一個,則會終止進程; 終止一個線程並不意味着從操作系統刪除線程對象,操作系統只是在關閉與此線程關聯的句柄將線程對象引用計數減一,當線程對象的引用計數爲0才刪

原创 排序之冒泡排序

冒泡排序主要思想是,依次比較分別獲得每趟中未排序的最大值或最小值 僞代碼: BubbleSort(int *A,int n) flag=1; while flag //每次遍歷時,若存在逆序對,必須

原创 信號量

信號量和互斥量相同,不過互斥量每次只允許一個線程訪問共享資源,而信號變量則是允許一個或多個線程同時存取共享資源。 線程需要同步的原因:1.線程之間競爭共享的資源; 2.爲完成某個任務而需要協作; 通過互斥可完成線程之間的公共資源競爭,

原创 _beginthread和_beginthreadex()

對應的還有:endthread()和endthreadex()都是用來創建線程的創建和結束的;區別在於 1.形式上看,_beginthreadex()更像CreateThread()._beginthreadex()比_beginthr

原创 擬訓練自己編程能力

深感自己編程能力較差,先從基本的數據結構開始,提高自己編程能力; 雖然臨近畢業,項目壓力大,還是希望自己能夠努力做到每天AC一道題;並把相關的東西,總結歸納(很重要);先做個引子,希望後面再回來看時,一切都很值得;

原创 臨界段

臨界段只能用於一個進程中不同線程的通信; 與互斥量的不同體現在兩點上: 1.互斥量是內核變量,所以可以跨進程使用,當必須在進程間使用時,需要用互斥量;臨界段不是互斥變量,他是屬於進程內部的,對於進程間的通信無力; 2.臨界段用於進程

原创 C/C++字符或字符串的輸入

c中: 1、scanf(“%c”,a);//輸入一個字符,a代表的是一個字符 2、scanf(“%s”,a);//輸入一個字符串,a代表的是一個字符數組的名字,不接受空格的 3、getchar();//輸入一個字符 4、gets(