freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

畢設論文-基于linux平臺的聊天軟件的設計與研究(參考版)

2025-06-09 02:58本頁面
  

【正文】 南京工程學院畢業(yè)設計說明書(論文) 第 33 頁 互斥量的主要操作函數(shù)如下表 所示: 表 互斥量主要函數(shù)說明 函數(shù)原型 簡要說明 int pthread_mutex_lock(pthread_mutex_t *mutex) 上鎖 int pthread_mutex_trylock(pthread_mutex_t *mutex) 上鎖 int pthread_mutex_unlock(pthread_mutex_t *mutex) 解鎖 各函數(shù)詳細說明 : pthread_mutex_lock(): 將其 指向的資源 加鎖。 其定義如下表 所示: 表 pthread_mutex_init 函數(shù)定義 原型 int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *attr)。 當一個共享資源被 mutex 上鎖后,其他任何線程都無法對這塊共享資源 進行修改 。 互斥量只能由獲取它的線程進行釋放,如果違反這一原則,則結果是未定義的。 互斥量 (mutex)從概念上講 有點 類似于一個 初始值為 1 二進制信號量。這個鎖是出于激活狀態(tài)的,但是對當前任務并不可用 ,這就有點類似于忙時等待的情況 。 信號量 可 被增加或減少 , 但 將保證對 其關鍵的 是原子操作 ,即有多個線程試圖改變 一個信號量的值時,系統(tǒng)將保證所有操作依次進行 。只有當多個線程同時對某一塊內存中的數(shù)據(jù)進行修改 時,多個線程都要對其進行修改,那么到底是哪一個線程先修改呢,此時就涉及到同步的問題 。 綜上所述,線程在 一下 情況下退出 : ① 程序調用 pthread_exit() ② 調用 pthread_cancle() ③ 從回調函數(shù) start_routine 中 返回 ④ 調用 exit(),或者 主線程 退出 (終止進程中所有的線程 ) 線程同步 概念 線程同步,顧名思義就是對 某 一塊 內存 的操作的先后順序 。 參數(shù)說明 thread 指向一個 pthread_t 型變量,用于返回線程 ID attr 指定 各種不同 屬性,若設為 NULL,表示默認屬性 start_routine 新線程的工作函數(shù) args 傳遞給執(zhí)行函數(shù)的參數(shù) 返回值 0 表示執(zhí)行成功,出錯返回錯誤編號 (EAGAIN、 EINVAL) (2)pthread_join(),等待一個線程執(zhí)行 結束 (與 waitpid()類似 ),相關定義如南京工程學院畢業(yè)設計說明書(論文) 第 31 頁 下表 所示: 表 pthread_join 函數(shù)定義 原型 int pthread_join(pthread_t thread, void **value_ptr) 參數(shù)說明 thread 指定要等待 哪個 線程 value_ptr 是指向 (void *)型數(shù)據(jù)的指針,用于獲得線程的退出狀態(tài) (the value that was specified when the thread performed a return or called pthread_exit()),如果不需要退出狀態(tài)則可將其設為 NULL 返回值 成功返回 0,錯誤返回一個非負數(shù) (3)pthread_exit() void pthread_exit(void *value_ptr)。 如果處理不好,會造成死鎖的情況,那么進程就會變?yōu)榻┧肋M程 ; ② 在進程中崩潰 (Crash in process):線程的 非法操作 從而造成整個進程的退出 。 進程和線程的關系 及優(yōu)缺點 線程在進程中的分布 如圖 所示 : 南京工程學院畢業(yè)設計說明書(論文) 第 29 頁 代碼段未初始化的數(shù)據(jù) ( bs s )堆共享的庫文件和內存線程 1 的棧線程 2 的棧線程 3 的棧參數(shù)和環(huán)境變量主線程棧初始化的數(shù)據(jù)虛擬內存地址 ( 十六進制 )0 xC 0 0 0 0 0 0 00 x 4 0 0 0 0 0 0 0T A S K _ U N M A P P E D _ BA S E0 X 0 8 0 4 8 0 00 X 0 0 0 0 0 0 0線程 3 執(zhí)行主線程執(zhí)行線程 1 執(zhí)行線程 2 執(zhí)行 圖 進程中的線程 使用線程的優(yōu)點: ① 較快的執(zhí)行 (Faster execution):在多核 CPU 上執(zhí)行明顯快于單核 CPU,且 上下文 狀態(tài)的 切換比進程快 ; ② 響應迅速 (Responsiveness):當主線程阻塞時,其他線程仍可和用戶進行交互 ; ? ③ 對資源的需求小 (Lower resource consumption):用較少的系統(tǒng)資源服務于更多的用戶 ; ④ 更好的系統(tǒng)利用 (Better system utilization):能更好的利用 內存 的資源 ; ⑤ 簡單的分享和通信 (Simplified sharing and munication); ⑥ 并行化 (Parallelization):多個線程同時對一個任務進行操作 。 而 創(chuàng)建兩個進程的方法在這里 也是 是不可取的,因為不同的進程對應不同的端口號 ,但是信息的發(fā)送和接收必須使用同一 端口。 不管是服務器還是客戶機都包含信息的一收一發(fā)兩個過程 。 與進程相比,線程沒有自己獨立的地址空間,創(chuàng)建出來的新線程將和創(chuàng)建它的進程 (或線程 )共享一個虛擬地址空間,它們被置于同一個線程組中。 操作系統(tǒng)中, 線程和進程的實現(xiàn) 是不同的 ,單線程通常是進程的一部分 。 ? ③ 終止 結束一個進程的運行。 下圖描述了進程的創(chuàng)建過程 : ② 運行 : 同一系統(tǒng)中可以有多個進程同時運行,并且能夠互相通信 。一個內核產生新的 PID 時,內核為這個 PID 分配系統(tǒng)資源 ,這樣一個進程也就產生了 。 (4)不同進程的區(qū)分方法 (內核 ) 每個進程都有一個屬于自己的 id號 叫做 PID,就像我們每個人都有一個自己的身份證號 一 樣 , PID 標識著這個進程的存在 。 (3)什么 是 進程 進程的專業(yè)定義 , IEEE Std :“ An address space with one or more threads executing within that address space, and the required system resources for those threads” 。 下面是其執(zhí)行流程 : 1)從文件中讀取輸入 2)將 讀取到的內容 按引用準則 分成字和運算符 。如果檢測到有注釋時會自動忽略以 ‘’ 開頭這一行 。 和其他 GNU 軟件一樣,bash 是可移植的 ,其目前運行在幾乎所有版本的 Unix 及其他的操作系統(tǒng)上 ,像 MSDOS、 os/2 和微軟平臺 。 ② 可執(zhí)行腳本 南京工程學院畢業(yè)設計說明書(論文) 第 26 頁 Bash 就是 shell 或者說是命令行 語言 解釋器 。內核通常 支持幾種特定形式 的可執(zhí)行文件。常用的幾個有 AF_UNIX, AF_LOCAL Local munication AF_INET IPv4 Inter protocols AF_INET6 IPv6 Inter protocols type 規(guī)定使用那種 通信數(shù)據(jù)類型 SOCK_STREAM 提供有序、可靠、 雙向,基于連接的字節(jié)流 SOCK_DGRAM 不可靠,無連接的數(shù)據(jù)包 protocol 指定 domain 地址族中某 個特定的協(xié)議,通常情況下可以指定為 0 (2)bind()相關定義如下表 所示: 表 bind 函數(shù)定義 原型 int bind(int sock_fd, const struct sockaddr *addr, socklen_t addr_len) 函數(shù)說明 給指定 sock_fd 的 socket 分配 內存 地址空間 參數(shù)說明 sock_fd 創(chuàng)建 socket 時返回的 文件描述符 addr 結構體,用于存放 ip和端口號 addr_len 結構體 addr 的大小 (3)listen()相關定義如下表 所示: 南京工程學院畢業(yè)設計說明書(論文) 第 24 頁 表 listen 函數(shù)定義 原型 int listen(int sock_fd, int len) 函數(shù)說明 監(jiān)聽 client 連接的信號 ,和 accept()合同 參數(shù)說明 sock_fd 創(chuàng)建 socket 時返回的 文件描述符 len 指定 等待隊列的最大長度 (4)accept()相關定義如下表 所示: 表 accept 函數(shù)定義 原型 int accept(int sock_fd, struct sockaddr *addr, socklen_t *addr_len) 函數(shù)說明 響應連接等待隊列的隊頭 請求, 并創(chuàng)建 新的 socket, 返回其文件描述符,新創(chuàng)建的 socket 并不會影響 原先 的 socket 參數(shù)說明 sock_fd 創(chuàng)建 socket 時返回的 文件描述符 addr 結構體,用于存放 ip和端口號 addr_len 結構體 addr 的大小 (5)connect()相關定義如下表 所示: 表 connect 函數(shù)定義 原型 int connect(int sock_fd, const struct sockaddr *addr, socklen_t addr_len) 函數(shù)說明 通過指定的 sock_fd 與 socket 連接進而 與其地址連接 參數(shù)說明 sock_fd 創(chuàng)建 socket 時返回的 文件描述符 addr 結構體,用于存放 ip和端口號 addr_len 結構體 addr 的大小 (6)send()相關定義如下表 所示: 南京工程學院畢業(yè)設計說明書(論文) 第 25 頁 表 send 函數(shù)定義 原型 ssize_t send(int sock_fd, const void *buf, size_t buf_len, int flags) 函數(shù)說明 往指定 sock_fd 的 socket 發(fā)送 消息 參數(shù)說明 buf 發(fā)送數(shù)據(jù)存放的暫存區(qū) buf_len 暫存區(qū)的 大小 (7)recv()相關定義如下表 所示: 表 recv 函數(shù)定義 原型 ssize_t recv(int sock_fd, void *buf, size_t buf_len, int flags) 函數(shù)說明 從指定 sock_fd 的 socket 中讀取數(shù)據(jù) 參數(shù)說明 buf 發(fā)送數(shù)據(jù)暫時存放 的區(qū)域 buf_len 暫存區(qū)的 大小 (8)close() 格式: close(fd) 進程 進程的概念 (1)在說明 進程 前,先看一下 什么是程序? 程序就是一個文件,該文件包含了一系列信息,這些信息描述了如何在運行時構造一個進程。 示意圖如圖 所示 : w el l k n o w p o r ten d o f f i l e n o t i f i c a t i o nd a t a ( r e q u e s t )d a t a ( r ep l y )s ock e t ()conn e ct ()s e n d ()r e cv ()cl os e ()s ock e t ()bi nd ()l i s t e n ()a cce pt ()cl os e ()r e cv ()s e n d ()r e cv ()P r oc e s s r e qu e s tT C P C l i e n tT C P S e r v e rC o n n e c t i o n e s t a b l i s h m e n tB l o c k s u n t i l c o n n e c t i o n f r o m c l i e n tT C P t h r ee w a y h a n d s h a k e 圖 Socket 編程示意圖 函數(shù)格式 (1)socket()相關定義如下表 所示 : 南京工程學院畢業(yè)設計說明書(論文) 第 23 頁 表 socket 函數(shù)定義 原型 int socket(int domains, int type, int protocol)。 一個 PC 機扮演的角色是客戶機還是服務機還是兩者都是 ,通常取決 于 其應用的需求 。 Server 通常按其服務進行分類歸檔 。 函數(shù)參數(shù) 要轉換的字符串地址 函數(shù)返回值 Success:返回轉換后的二進制地址 南京工程學院畢業(yè)設計說明書(論文) 第 22 頁 鏈接函數(shù)說明 C/S 連接示意圖 C/S 模式描述了 應用程
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1