原创 Linux 下C語言多線程編程--互斥鎖

互斥鎖 互斥鎖用來保證一段時間內只有一個線程在執行一段代碼(保證共享數據的完整性) 互斥鎖變量 typedef union{ struct __pthread_mutex_s __data; char __size[

原创 Linux 下C語言多線程編程

進程與線程的區別 進程擁有獨立的地址空間,而且進程間的數據空間也相互獨立,數據的傳遞得通過通信的方式; 線程是在一個進程下同時運行,多個線程之間的數據共享 線程的啓動 函數原型: /* Create a new thread,

原创 Linux 下C語言多線程編程--線程數據

線程數據 在C語言編程中,我們都知道,數據共享往往是通過全局變量的方式,全局變量在單線程中不會有什麼問題,但是在多線程情況下,如果多個線程都對這個全局變量進行讀寫操作,需要加鎖進行保護,鎖的代價其實是很大的。 在實際的使用中,很

原创 Linux 下使用select 實現TCP server和TCP client

基於TCP(面向鏈接)的socket編程 Server端的流程如下: 1 創建Socket套接字 2 將套接字綁定到一個本地地址(IP)和端口(port)上 3 將套接字設置爲監聽模式,準備接收客戶端請求(listen

原创 Linux 下C語言多線程編程--線程屬性

線程屬性 屬性結構 union pthread_attr_t{ char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; }; 屬性值不能直接設置,必須使用相關函數進

原创 Linux Socket 編程相關函數

struct sockaddr and struct sockaddr_in struct sockaddr定義在<sys/socket.h>頭文件中,原型如下 /* Structure describing a generic

原创 Node.JS實現定時器暫停恢復

在項目中,常常需要使用定時器做一些輪詢的操作,Node JS裏面提供了兩個全局函數setTimeout和setInterval來實現,但是在使用中,定時任務往往是一些耗時操作,我們期望每一次輪詢等操作做完了在重新開始定時器,因此需

原创 Linux 字符設備驅動模板

在Linux內核裏面,設備(device)主要分爲字符設備,塊設備,網絡設備,字符設備驅動是Linux驅動基礎,在看《Linux 設備驅動開發詳解》這本書的過程中,把字符設備相知識記錄整理如下。 字符設備驅動的組成 字符設備驅動模

原创 Linux 文件系統與驅動

之前做應用程序的開發,就知道Linux系統的一大特點就是一切皆文件,一直以來對所有設備的操作都是使用系統函數open read write close來實現的,就沒關心過系統裏面是怎麼實現對各種設備的區分和控制櫃,直到開始看Lin

原创 Linux 內核模快編程模板

模塊編寫 入口函數 int __init xxx_func(void) { } module_init(xxx_func); 出口函數 void __exit xxx_func(void) { } module_ex