原创 Linux 進程管理命令
Linux 進程管理 命令:& ==>將命令放在後臺執行 #cp src_file dest_file & 命令:jobs ==>
原创 sizeof 操作符詳解
1、定義sizeof是C語言的一種單目操作符,它並不是函數。sizeof操作符以字節形式給出了其操作數所佔存儲空間的大小。操作數可以是一個表達式或括在括號內的類型名。操作數所佔存儲空間的大小由操作數的類型決定。作用就是返回一個對象或者類型
原创 線程同步
線程同步 互斥量:從本質上是一把鎖,在訪問共享資源前對互斥量加鎖,在訪問完後解鎖,對互斥量加鎖後任何其他試圖再次對其加鎖都會被阻塞,知道當前線程對互斥量解鎖。 互斥量初始化 1)靜態初始化 將互斥量設置爲PTHREAD_MUTEX_INI
原创 排序算法(一)
冒泡排序 基本思想: 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。 冒泡排序的示
原创 poll函數
函數原型 #include<poll.h> int poll(struct pollfd fdarray[],nfds_t nfds, int timeout); 返回值:準備就緒的描述符數目;若是超時,返回0;若是出錯,返回-1
原创 排序算法(二)
歸併排序 基本思想: 歸併(Merge)排序法是將兩個(或兩個以上)有序表合併成一個新的有序表,即把待排序序列分爲若干個子序列,每個子序列是有序的。然後再把有序子序列合併爲整體有序序列。 歸併排序示例: 算法實現 void mer
原创 c++的引
引用簡介 引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣。 引用的聲明方法:類型標識符 &引用名=目標變量名; 【例1】:int a; int &ra=a; //定義引用ra,它是變量a的引用,即別名
原创 進程間通信之管道和FIFO
管道 管道是進程通信的手段之一,管道實際上只存在內存的文件,對這個文件的操作是通過兩個打開的文件描述符, 它們分別代表管道的兩端,管道是一種特殊的文
原创 線程私有數據
線程私有數據 創建私有數據之前得先創建一個鍵,需要創建與該數據相關聯的鍵 #include<pthread.h> int pthread_key_create(pthread_key_t *keyp, void (*destructor)
原创 消息隊列操作函數
消息隊列操作函數 1、概述 消息隊列可以認爲是一個消息鏈表,System V 消息隊列使用消息隊列標識符標識。具有足夠特權的任何進程都可以往一個
原创 const的用法
const 的用法 修飾變量類型const int bufSize = 512; //任何對bufSize進行賦值的操作都是錯誤的。 const int j = get_num(); //因爲const對象一旦創建就不能改變,所以
原创 共享存儲函數
共享存儲 共享存儲允許兩個或多個進程共享一個給定的存儲區。數據不需要在客戶進程 和服務器進程之間複製,因此這是最快的一種進程間通信的方式。使用的竅門
原创 VIM 使用技巧
VIM 使用技巧 1)刪除空行 ==>:g/^$/d 2)替換: 用字符串 str2 替換正文中所有出現的字符串 str1 ==>:1,$
原创 Select 函數
函數允許進程指示內核等待多個事件中的任何一個發生,並只在有一個或多個事件發生或經歷一段指定的時間後才喚醒它。 函數說明 #include<sys/select.h> #include<sys/time.h> int select(int
原创 線程私有數據實現的原理
在維護每個線程的私有數據的時候,我們可能會想到分配一個保存線程數據的數組,用線程的ID作爲數組的索引來實現訪問,但是有一個問題是系統生成的線程ID不能保證是一個小而連續的整數,並且用數組實現的時候由於其他線程也可以訪問其數