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

正文內(nèi)容

畢設(shè)論文-基于linux平臺(tái)的聊天軟件的設(shè)計(jì)與研究(參考版)

2025-06-09 02:58本頁面
  

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