浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 嵌入式系統(tǒng)

基于TCP/IP的多線程通信及其在遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用

發(fā)布時(shí)間:2008/6/3 0:00:00 訪問次數(shù):884

 

作者:上海交通大學(xué)自動(dòng)化研究所(200030)王金廉 謝劍英 賈 青來源:《電子技術(shù)應(yīng)用》   基于tcp/ip的多線程通信及其在遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用

摘 要: 提出了一種在windows nt下基于tcp/ip協(xié)議的多線程通信的設(shè)計(jì)與實(shí)現(xiàn)方法,在此基礎(chǔ)上給出了多線程通信在蓄電池遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用實(shí)例。

關(guān)鍵詞: 多線程 實(shí)時(shí)性 tcp/ip協(xié)議 遠(yuǎn)程監(jiān)控系統(tǒng)

傳統(tǒng)的應(yīng)用程序都是單線程的,即在程序運(yùn)行期間,由單個(gè)線程獨(dú)占cpu的控制權(quán),負(fù)責(zé)執(zhí)行所有任務(wù)。在這種情況下,程序在執(zhí)行一些比較費(fèi)時(shí)的任務(wù)時(shí),就無法及時(shí)響應(yīng)用戶的操作,影響了應(yīng)用程序的實(shí)時(shí)性能。在監(jiān)控系統(tǒng),特別是遠(yuǎn)程監(jiān)控系統(tǒng)中,應(yīng)用程序往往不但要及時(shí)把監(jiān)控對(duì)象的最新信息反饋給監(jiān)視客戶(通過圖形顯示),還要處理本地機(jī)與遠(yuǎn)程機(jī)之間的通信以及對(duì)控制對(duì)象的實(shí)時(shí)控制等任務(wù),這時(shí) ,僅僅由單個(gè)線程來完成所有任務(wù),顯然無法滿足監(jiān)控系統(tǒng)的實(shí)時(shí)性要求。在dos系統(tǒng)下,這些工作可以由中斷來完成。而在windows nt下,中斷機(jī)制對(duì)用戶是不透明的。為此,可引進(jìn)多線程機(jī)制,主線程專門負(fù)責(zé)消息的響應(yīng),使程序能夠響應(yīng)命令和其他事件。輔助線程可以用于完成其他比較費(fèi)時(shí)的工作,如通信、圖形顯示和后臺(tái)打印等,這樣就不至于影響主線程的運(yùn)行。

1 windows nt 多線程概述

windows nt是一個(gè)真正的搶占式多任務(wù)操作系統(tǒng)。在 windows nt中,啟動(dòng)一個(gè)應(yīng)用程序就是啟動(dòng)該應(yīng)用程序的一個(gè)實(shí)例,即進(jìn)程。進(jìn)程由一個(gè)或多個(gè)線程構(gòu)成,擁有內(nèi)存和資源,但自己不能執(zhí)行自己,而是進(jìn)程中的線程被調(diào)度執(zhí)行。進(jìn)程至少要有一個(gè)線程,當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí),就創(chuàng)建了一個(gè)線程,即主線程。主線程可以創(chuàng)建其他輔助線程,由主線程創(chuàng)建的線程又可創(chuàng)建線程。每個(gè)線程都可指定優(yōu)先級(jí),操作系統(tǒng)根據(jù)線程的優(yōu)先級(jí)調(diào)度線程的執(zhí)行。

windows nt中使用多線程的方法有三種:

· 使用c多線程庫函數(shù);

· 使用createthread() 等win32函數(shù);

· 使用mfc類。

本文采用第三種方法。在visual c++5.0 中,mfc應(yīng)用程序用cwinthread 對(duì)象表示線程;静僮魅缦拢

· 創(chuàng)建新線程:調(diào)用mfc全局函數(shù)afxbeginthread ()創(chuàng)建新線程。afxbeginthread()啟動(dòng)新線程并返回控制,然后,新線程和調(diào)用afxbeginthread()的線程同時(shí)運(yùn)行。它的返回值為指向cwinthread對(duì)象的指針;

· 暫停/恢復(fù)線程:調(diào)用cwinthread類成員函數(shù)suspendthread()暫停線程的運(yùn)行,調(diào)用resumethread()成員函數(shù)恢復(fù)線程的運(yùn)行;

· 終止線程:在線程內(nèi)部可調(diào)用全局函數(shù)afxbeginthread()終止線程的運(yùn)行,否則,線程執(zhí)行結(jié)束后,線程自動(dòng)從線程函數(shù)返回并釋放線程占有的資源。

2 基于tcp/ip的多線程編程

tcp/ip是lnternet上廣泛使用的一種協(xié)議,可用于異種機(jī)之間的互聯(lián)。tcp/ip協(xié)議本身是非常復(fù)雜的,然而在網(wǎng)絡(luò)編程中,程序員不必考慮tcp/ip的實(shí)現(xiàn)細(xì)節(jié),只需利用協(xié)議的網(wǎng)絡(luò)編程接口socket(亦稱套接字)即可。在 windows 中,網(wǎng)絡(luò)編程接口是 windows socket它包含標(biāo)準(zhǔn)的berkley sockets的功能調(diào)用的集合,以及為 windows 所做的一些擴(kuò)展。tcp/ip協(xié)議的應(yīng)用一般采用客戶/服務(wù)器模式,面向連接的應(yīng)用調(diào)用如圖1所示。

根據(jù)上述順序調(diào)用函數(shù)建立連接后,通信雙方便可交換數(shù)據(jù)[1]。然而,在調(diào)用帶*號(hào)的函數(shù)時(shí),操作常會(huì)阻塞,特別是當(dāng)套接字工作在同步阻塞模式(blocking mode)時(shí)。這時(shí),程序無法響應(yīng)任何消息。為了避免出現(xiàn)這種情況,本文引進(jìn)輔助線程。在執(zhí)行含有可能阻塞的函數(shù)的任務(wù)時(shí),動(dòng)態(tài)創(chuàng)建新的線程,專門處理該任務(wù)。主線程把任務(wù)交給輔助線程后,不再對(duì)輔助線程加以控制與調(diào)度。本文分別針對(duì)connect()、accept()、receive()、send()等可能阻塞的函數(shù)創(chuàng)建了相應(yīng)的線程,如表1所示。

 

作者:上海交通大學(xué)自動(dòng)化研究所(200030)王金廉 謝劍英 賈 青來源:《電子技術(shù)應(yīng)用》   基于tcp/ip的多線程通信及其在 遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用

摘 要: 提出了一種在windows nt下基于tcp/ip協(xié)議的多線程通信的設(shè)計(jì)與實(shí)現(xiàn)方法,在此基礎(chǔ)上給出了多線程通信在蓄電池遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用實(shí)例。

關(guān)鍵詞: 多線程 實(shí)時(shí)性 tcp/ip協(xié)議 遠(yuǎn)程監(jiān)控系統(tǒng)

傳統(tǒng)的應(yīng)用程序都是單線程的,即在程序運(yùn)行期間,由單個(gè)線程獨(dú)占cpu的控制權(quán),負(fù)責(zé)執(zhí)行所有任務(wù)。在這種情況下,程序在執(zhí)行一些比較費(fèi)時(shí)的任務(wù)時(shí),就無法及時(shí)響應(yīng)用戶的操作,影響了應(yīng)用程序的實(shí)時(shí)性能。在監(jiān)控系統(tǒng),特別是遠(yuǎn)程監(jiān)控系統(tǒng)中,應(yīng)用程序往往不但要及時(shí)把監(jiān)控對(duì)象的最新信息反饋給監(jiān)視客戶(通過圖形顯示),還要處理本地機(jī)與遠(yuǎn)程機(jī)之間的通信以及對(duì)控制對(duì)象的實(shí)時(shí)控制等任務(wù),這時(shí) ,僅僅由單個(gè)線程來完成所有任務(wù),顯然無法滿足監(jiān)控系統(tǒng)的實(shí)時(shí)性要求。在dos系統(tǒng)下,這些工作可以由中斷來完成。而在windows nt下,中斷機(jī)制對(duì)用戶是不透明的。為此,可引進(jìn)多線程機(jī)制,主線程專門負(fù)責(zé)消息的響應(yīng),使程序能夠響應(yīng)命令和其他事件。輔助線程可以用于完成其他比較費(fèi)時(shí)的工作,如通信、圖形顯示和后臺(tái)打印等,這樣就不至于影響主線程的運(yùn)行。

1 windows nt 多線程概述

windows nt是一個(gè)真正的搶占式多任務(wù)操作系統(tǒng)。在 windows nt中,啟動(dòng)一個(gè)應(yīng)用程序就是啟動(dòng)該應(yīng)用程序的一個(gè)實(shí)例,即進(jìn)程。進(jìn)程由一個(gè)或多個(gè)線程構(gòu)成,擁有內(nèi)存和資源,但自己不能執(zhí)行自己,而是進(jìn)程中的線程被調(diào)度執(zhí)行。進(jìn)程至少要有一個(gè)線程,當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí),就創(chuàng)建了一個(gè)線程,即主線程。主線程可以創(chuàng)建其他輔助線程,由主線程創(chuàng)建的線程又可創(chuàng)建線程。每個(gè)線程都可指定優(yōu)先級(jí),操作系統(tǒng)根據(jù)線程的優(yōu)先級(jí)調(diào)度線程的執(zhí)行。

windows nt中使用多線程的方法有三種:

· 使用c多線程庫函數(shù);

· 使用createthread() 等win32函數(shù);

· 使用mfc類。

本文采用第三種方法。在visual c++5.0 中,mfc應(yīng)用程序用cwinthread 對(duì)象表示線程;静僮魅缦拢

· 創(chuàng)建新線程:調(diào)用mfc全局函數(shù)afxbeginthread ()創(chuàng)建新線程。afxbeginthread()啟動(dòng)新線程并返回控制,然后,新線程和調(diào)用afxbeginthread()的線程同時(shí)運(yùn)行。它的返回值為指向cwinthread對(duì)象的指針;

· 暫停/恢復(fù)線程:調(diào)用cwinthread類成員函數(shù)suspendthread()暫停線程的運(yùn)行,調(diào)用resumethread()成員函數(shù)恢復(fù)線程的運(yùn)行;

· 終止線程:在線程內(nèi)部可調(diào)用全局函數(shù)afxbeginthread()終止線程的運(yùn)行,否則,線程執(zhí)行結(jié)束后,線程自動(dòng)從線程函數(shù)返回并釋放線程占有的資源。

2 基于tcp/ip的多線程編程

tcp/ip是lnternet上廣泛使用的一種協(xié)議,可用于異種機(jī)之間的互聯(lián)。tcp/ip協(xié)議本身是非常復(fù)雜的,然而在網(wǎng)絡(luò)編程中,程序員不必考慮tcp/ip的實(shí)現(xiàn)細(xì)節(jié),只需利用協(xié)議的網(wǎng)絡(luò)編程接口socket(亦稱套接字)即可。在 windows 中,網(wǎng)絡(luò)編程接口是 windows socket它包含標(biāo)準(zhǔn)的berkley sockets的功能調(diào)用的集合,以及為 windows 所做的一些擴(kuò)展。tcp/ip協(xié)議的應(yīng)用一般采用客戶/服務(wù)器模式,面向連接的應(yīng)用調(diào)用如圖1所示。

根據(jù)上述順序調(diào)用函數(shù)建立連接后,通信雙方便可交換數(shù)據(jù)[1]。然而,在調(diào)用帶*號(hào)的函數(shù)時(shí),操作常會(huì)阻塞,特別是當(dāng)套接字工作在同步阻塞模式(blocking mode)時(shí)。這時(shí),程序無法響應(yīng)任何消息。為了避免出現(xiàn)這種情況,本文引進(jìn)輔助線程。在執(zhí)行含有可能阻塞的函數(shù)的任務(wù)時(shí),動(dòng)態(tài)創(chuàng)建新的線程,專門處理該任務(wù)。主線程把任務(wù)交給輔助線程后,不再對(duì)輔助線程加以控制與調(diào)度。本文分別針對(duì)connect()、accept()、receive()、send()等可能阻塞的函數(shù)創(chuàng)建了相應(yīng)的線程,如表1所示。

-->

相關(guān)IC型號(hào)
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!

    <th id="7uux7"><strike id="7uux7"></strike></th>

      <menu id="7uux7"></menu>
      <dfn id="7uux7"><table id="7uux7"><th id="7uux7"></th></table></dfn>
    • <span id="7uux7"></span>