急急急
作業系統中負責執行緒間通訊的東西叫管道。
管道(pipe)是程序用來通訊的共享記憶體區域。一個程序往管道中寫入資訊,而其它的程序可以從管道中讀出資訊。如其名,管道是程序間資料交流的通道。郵路(Mailslots)的功能與管道類似,也是程序間通訊(interprocess communications,IPC)的媒介,只不過其具體實現方式與管道有些差別。一個基於Win32的應用程式可以在郵路中儲存訊息,這些訊息通常透過網路發往一個指定的計算機或某域名(域是共享一個組名的一組工作站或伺服器。)下的所有計算機。你也可以使用命名管道代替郵路來進行程序間通訊。命名管道最適合用來兩個程序間的訊息傳遞,郵路則更適合一個程序向多個程序廣播訊息。郵路具有一個重要的特點,它使用資料包廣播訊息。廣播(broadcast)是網路傳輸中使用的術語,它意味著接收方收到資料後不傳送確認訊息通知傳送方。而管道(這裡的管道指命名管道,有關命名管道以下詳解。)則不同,它更類似於打電話,你只對一個當事人說話,但是你卻非常清楚你的話都被對方聽到。郵路和管道一樣,也是一個虛擬檔案,它儲存在記憶體中,但是你卻必須使用普通的Win32檔案函式訪問它,比如CreateFile、ReadFile、WriteFile等。郵路中儲存的資料可以是任何形式的,唯一的要求是不得超過64K。與磁碟檔案不同的是,郵路是一個臨時的物件,當某個郵路所有的控制代碼都關閉的時候,該郵路及其中的資料就被刪除。
管道的型別有兩種:匿名管道和命名管道。匿名管道是不命名的,它最初用於在本地系統中父程序與它啟動的子程序之間的通訊。命名管道更高階,它由一個名字來標識,以使客戶端和服務端應用程式可以透過它進行彼此通訊。而且,Win32命名管道甚至可以在不同系統的程序間使用,這使它成為許多客戶/伺服器應用程式的理想之選。
就像水管連線兩個地方並輸送水一樣,軟體的管道連線兩個程序並輸送資料。一個一個管道一旦被建立,它就可以象檔案一樣被訪問,並且可以使用許多與檔案操作同樣的函式。可以使用CreateFile函式獲取一個已開啟的管道的控制代碼,或者由另一個程序提供一個控制代碼。使用WriteFile函式向管道寫入資料,之後這些資料可以被另外的程序用ReadFile函式讀取。管道是系統物件,因此管道的控制代碼在不需要時必須使用CloseHandle函式關閉。
匿名管道只能單向傳送資料,而命名管道可以雙向傳送。管道可以以位元流形式傳送任意數量的資料。命名管道還可以將資料集合到稱為訊息的資料塊中。命名管道甚至具有透過網路連線多程序的能力。但遺憾的是Windows9X不支援建立命名管道,它只能在WindowsNT系列(如Windows NT,Windows 2000,Windows XP)的作業系統上建立。
急急急
作業系統中負責執行緒間通訊的東西叫管道。
管道(pipe)是程序用來通訊的共享記憶體區域。一個程序往管道中寫入資訊,而其它的程序可以從管道中讀出資訊。如其名,管道是程序間資料交流的通道。郵路(Mailslots)的功能與管道類似,也是程序間通訊(interprocess communications,IPC)的媒介,只不過其具體實現方式與管道有些差別。一個基於Win32的應用程式可以在郵路中儲存訊息,這些訊息通常透過網路發往一個指定的計算機或某域名(域是共享一個組名的一組工作站或伺服器。)下的所有計算機。你也可以使用命名管道代替郵路來進行程序間通訊。命名管道最適合用來兩個程序間的訊息傳遞,郵路則更適合一個程序向多個程序廣播訊息。郵路具有一個重要的特點,它使用資料包廣播訊息。廣播(broadcast)是網路傳輸中使用的術語,它意味著接收方收到資料後不傳送確認訊息通知傳送方。而管道(這裡的管道指命名管道,有關命名管道以下詳解。)則不同,它更類似於打電話,你只對一個當事人說話,但是你卻非常清楚你的話都被對方聽到。郵路和管道一樣,也是一個虛擬檔案,它儲存在記憶體中,但是你卻必須使用普通的Win32檔案函式訪問它,比如CreateFile、ReadFile、WriteFile等。郵路中儲存的資料可以是任何形式的,唯一的要求是不得超過64K。與磁碟檔案不同的是,郵路是一個臨時的物件,當某個郵路所有的控制代碼都關閉的時候,該郵路及其中的資料就被刪除。
管道的型別有兩種:匿名管道和命名管道。匿名管道是不命名的,它最初用於在本地系統中父程序與它啟動的子程序之間的通訊。命名管道更高階,它由一個名字來標識,以使客戶端和服務端應用程式可以透過它進行彼此通訊。而且,Win32命名管道甚至可以在不同系統的程序間使用,這使它成為許多客戶/伺服器應用程式的理想之選。
就像水管連線兩個地方並輸送水一樣,軟體的管道連線兩個程序並輸送資料。一個一個管道一旦被建立,它就可以象檔案一樣被訪問,並且可以使用許多與檔案操作同樣的函式。可以使用CreateFile函式獲取一個已開啟的管道的控制代碼,或者由另一個程序提供一個控制代碼。使用WriteFile函式向管道寫入資料,之後這些資料可以被另外的程序用ReadFile函式讀取。管道是系統物件,因此管道的控制代碼在不需要時必須使用CloseHandle函式關閉。
匿名管道只能單向傳送資料,而命名管道可以雙向傳送。管道可以以位元流形式傳送任意數量的資料。命名管道還可以將資料集合到稱為訊息的資料塊中。命名管道甚至具有透過網路連線多程序的能力。但遺憾的是Windows9X不支援建立命名管道,它只能在WindowsNT系列(如Windows NT,Windows 2000,Windows XP)的作業系統上建立。