Time of Update: 2018-12-05
條件變數變數也是出自POSIX線程標準,另一種線程同步機制。主要用來等待某個條件的發生。可以用來同步同一進程中的各個線程。當然如果一個條件變數存放在多個進程共用的某個記憶體區中,那麼還可以通過條件變數來進行進程間的同步。每個條件變數總是和一個互斥量相關聯,條件本身是由互斥量保護的,線程在改變條件狀態之間必須要鎖住互斥量。條件變數相對於互斥量最大的優點在於允許線程以無競爭的方式等待條件的發生。當一個線程獲得互斥鎖後,發現自己需要等待某個條件變為真,如果是這樣,該線程就可以等待在某個條件上,這樣就不
Time of Update: 2018-12-05
進程和線程都是由作業系統所體會的程式啟動並執行基本單元,系統利用該基本單元實現系統對應用的並發性。進程和線程的區別在於:1、一個程式至少有一個進程,一個進程至少有一個線程。2、線程的劃分尺度小於進程,使得多線程程式的並發性高。另外,進程在執行過程中擁有獨立的記憶體單元,而多個線程共用記憶體,從而極大地提高了程式的運行效率。線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程式啟動並執行入口、順序執行序列和程式的出口。但是線程不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個線程執行
Time of Update: 2018-12-05
藍芽(BlueTooth)要求的最低版本是android2.0,由於Android模擬器不支援藍芽,運行藍芽的有關應用必須在真機上測試回合。藍芽是一種重要的短距離無線通訊協議,廣泛應用於各種裝置(手機,醫學,汽車等)。藍芽是比較常用的無線通訊裝置,早研究成為手機的標配。在Android中,與藍芽有關的類和介面在android.bluetooth包中。其中BluetoothAdapter是藍芽中的核心類,代表本地的藍芽適配器裝置。BluetoothAdapter類讓使用者能執行基本的藍芽任務。例如
Time of Update: 2018-12-05
一、使用互斥鎖1、初始化互斥量pthread_mutex_t mutex =PTHREAD_MUTEX_INITIALIZER;//靜態初始化互斥量int pthread_mutex_init(pthread_mutex_t*mutex,pthread_mutexattr_t*attr);//動態初始化互斥量int
Time of Update: 2018-12-05
如果本地的藍牙裝置可以被附近的其它藍牙裝置發現,可以使用下面的方法,代碼中有注釋。當然需要你的藍牙裝置設定一下,可以被附近的藍牙裝置檢測到(一般為2分鐘)在設定-藍芽中-選中可檢測性複選框。我的資料時android4.1.1,手機廠家不同或版本不同,可能有所不同。eg:JAVA:代碼:package com.example.enabling_discoverability_bluetooth;import android.os.Bundle;import
Time of Update: 2018-12-05
串的堆式儲存結構在C和C++語言中 ,提供一個稱之為“堆”的共用空間,可以在程式運行過程中,系統利用函數malloc( )和free( )動態地申請或釋放一塊連續空間。由於在C和C++語言中可以用指標對數組進行訪問和操作,在串的儲存和操作上也可以充分利用上述特性。串的堆式儲存結構類似於線性表的順序儲存結構,以一組地址連續的儲存單元存放串值字元序列,其儲存空間是在程式執行過程中動態分配的,而不是靜態分配的。串的堆式儲存結構定義Typedef struct { char *ch; //指標域,
Time of Update: 2018-12-05
與其他裝置通訊通訊之前需要搜尋周圍的藍牙裝置。怎麼搜尋呢??1.如果資料中已經和某些藍牙裝置綁定,可以使用BluetoothAdapter.getBondedDevices();方法獲得已經綁定的藍牙裝置列表2.搜尋周圍的藍牙裝置受用BluetoothAdapter.startDiscovery()方法3.搜尋到的藍牙裝置都是通過廣播返回,so..。需要註冊廣播接收器來獲得已經搜尋到的藍牙裝置。下面我們看一下demo:我們在布局檔案中放一個按鈕和一個顯示文本TextView。我們點擊Butto
Time of Update: 2018-12-05
換了家公司,沒料到還是要做qt的工作。於時,不得已去重新編譯qte.這個編譯雖然已經做過,但是現在做起來,仍然花了很大力氣。其中的主要原因,編譯結果的不穩定,同樣的配置,有時候編譯能通過,有時候不能。現在主要說說其中的問題: 1.編譯器
Time of Update: 2018-12-05
由於個人習慣問題吧,好多次我需要重建samba伺服器。雖然每次都搞通了,但是多少都要花些時間。現在總結一下。 第一步:首先要ping通虛擬機器和你的物理主機。我選用的網路模式是briged。首先配置你的eth0,上面的ip地址,子網路遮罩,和網關設定一下。設定完後就直接ping一下,如果此時不通。就點擊vmware->edit->virtual network settings,點automatic briging選項卡,裡面有也有automatic
Time of Update: 2018-12-05
pagetable_init()根據實體記憶體初始化頁目錄項及頁表項static void __init pagetable_init (void)...{ unsigned long vaddr; pgd_t *pgd_base = swapper_pg_dir;#ifdef CONFIG_X86_PAE int i; //初始化整個頁目錄項(1024項) for (i = 0; i < PTRS_PER_PGD; i++) set_pgd(
Time of Update: 2018-12-05
世界上很多事情都是公平的,很多人都有健康的身體,很多作坊都有一樣的原材料,編程的人員都掌握了相同的基本知識。但是,事情的結果卻有著天壤之別,有的人異常傑出,有的人又很平庸。有的作品面世後流芳百世,有點作品不值一提。有的程式可以廣為流傳,並創造巨大的社會價值,有的程式僅僅是一個玩物而已。 關鍵是什麼呢?看你用心的程度,不要說是不是太晚了,是不是智商不夠,是不是....不要為沒有用心找任何理由。你用心的程度就能決定你的個人價值,從你手中出來的作品的品質。 think more, do more,
Time of Update: 2018-12-05
1.將光碟片\Linux2.6.27software\UpdateBootloader複製到案頭2.按UpdateBootloader內的說明文檔依次燒入bootloader.bin、kickstart.bin、stage1.bin3.安裝光碟片\Linux2.6.27software\TeraTerm軟體,並開啟,選擇串連串口並設定 一般預設即可(115200-8N1,無流量控制)。將開發板的調試串口與UART5(CON4)通過串口延長線與電腦相連4.複位開發板,在SmartARM3250&g
Time of Update: 2018-12-05
二叉樹的鏈式儲存結構-二叉鏈表在此只附上標頭檔:代碼已經在資源中共用:地址為:http://download.csdn.net/detail/ta893115871/4751186標頭檔為:/* * tree.h * * Created on: 2012-10-31 * Author: china * QQ:893115871 * * 二叉樹使用鏈表能避免順序儲存浪費空間的問題,演算法和結構相對簡單,但使用二叉鏈表, *
Time of Update: 2018-12-05
在核心代碼中當需要訪問當前進程的task_struct結構時使用的指標current實際上是個宏定義,它是根據當前進程的堆棧指標ESP計算出來的。#define current get_current()static inline struct task_struct * get_current(void)...{ return current_thread_info()->task;}static inline struct thread_info *current_thread_
Time of Update: 2018-12-05
新工作的展開,阿甘出生,緊急問題的調查......近兩個月沒有過來更新csdn的文章了,很是想念。新增加兩個分類,阿甘正長主要連結到阿甘的空間,文章更新還是在2485312.qzone.qq.com中。技術文檔時因為新的工作不時的需要對客戶講述一些技術要點和架構,因為客戶層次的不同,經常需要由淺入深的仔細講解,此時,對該塊知識的知識瞭解就不夠了,必須很系統的掌握架構的基礎上才能做到,此外對問題的分析定位也是很有協助的。
Time of Update: 2018-12-05
根據進程p的靜態優先順序static_prio計算該進程的時間片(根據下面公式計算時間片)static inline unsigned int task_timeslice(task_t *p)...{ if (p->static_prio < NICE_TO_PRIO(0)) return SCALE_PRIO(DEF_TIMESLICE*4, p->static_prio); else return SCALE_PRIO(DEF_TI
Time of Update: 2018-12-05
這家公司對我來說是一個挺大的挑戰!首先是語言,其次是溝通表達能力,再次是系統的linux知識體系的深度。 kavin透漏了些我入職的一些資訊,lucky man but also pitiable! 以這樣一個角色進入公司,而且可能會在接下來的日子裡付出很多。 挑戰會愈來愈大,對於我,對於家庭都是。 寶寶下月就要出世了,爸爸也要加油。 三十歲的人要有三十歲人的底蘊,今天因為語言的受挫顯的各方面都沒底氣,低聲下氣的,這是yangman的表現,你要能掌控局面,有這個意識,而不是祈求情況會好轉。no
Time of Update: 2018-12-05
當線程調用fork時,就為子進程建立了整個進程地址空間的副本。子進程通過繼承整個地址空間的副本,也從父進程那裡繼承了所有互斥量、讀寫鎖和條件變數的狀態。如果父進程包含多個線程,子進程在fork返回以後,如果緊接著不是馬上調用exec的話,就需要清理鎖的狀態。 在子進程內部只存在一個線程,它是由父進程中調用fork的線程的副本構成的。如果父進程中的線程佔有鎖,子進程同樣佔有這些鎖。問題是子進程並不包含佔有鎖的線程的副本,所以子進程沒有辦法知道它佔有了哪些鎖,並且需要釋放哪些鎖。當多線程進程
Time of Update: 2018-12-05
每個線程都有自己的訊號屏蔽字,但是訊號的處理是進程中所有線程共用的。這意味著儘管單個線程可以阻止某些訊號,但當線程修改了與某個訊號相關的處理行為以後,所有的線程都必須共用這個處理行為的改變。這樣如果一個訊號選擇忽略某個訊號,而其他的線程可以恢複訊號的預設處理行為,或者為訊號設定一個新的處理常式,從而可以撤銷上述線程的訊號選擇。進程中的訊號是送到單個線程的,如果訊號與硬體故障或者計時器逾時有關,該訊號就被發送到引起該事件的線程中去,而其他的訊號則被發送到任意一個線程。
Time of Update: 2018-12-05
主動釋放本來就是不需要的,以往的限制自動掃描到end只是阻止了高端zone被過度掃描,然而阻止的不徹底,因為雖然kswap自動掃描不和主動掃描重合掃描高端zone了,但是如果有多個主動掃描記憶體的進程同時存在就構成了競爭,比如該node當前系統實體記憶體吃緊,然後在多cpu上,多個進程同時分不到記憶體而調用了try_to_free_pages,然後就有了多個掃描進程,它們會帶來過多的記憶體被釋放,從而引起抖動,因為很多大量被頻繁使用的頁面都被換出後釋放了,置換演算法怎麼會讓頻繁被引用的頁面換出呢