多執行緒伺服器端的實現

2021-08-28 23:55:00 字數 713 閱讀 3838

1.單cpu系統中如何同時執行多個程序?請解釋該過程中發生的上下文切換。

答:只有1個cpu(cpu的運算裝置core)的系統中不是也可以同時執行多個程序嗎?只是因為系統將cpu時間分成了多個微小的塊後分配給了多個程序。為了分時使用cpu,需要「上下文切換」的過程。

2.為何執行緒上下文切換更快?執行緒間資料交換為何不需要類似ipc的特別技術?

答:(1)因為執行緒上下文切換不需要切換資料區和堆。(2)可以利用資料區和堆交換資料

3.請從執行流角度說明程序和執行緒的區別。

答:如果說程序在作業系統內部生成多個執行流,那麼執行緒就在同一程序內部建立多條執行流,因此,作業系統,程序,執行緒之間的關係可以通過圖來表示(圖略)

4.請說明完全銷毀linux執行緒的2種方法。

答:方法一:利用pthread_join()函式。

#include

int pthread_join(pthread_t thread, void **retval);

引數:thread是要等待的執行緒的id。

retval是乙個二級指標,指向執行緒函式的返回值(執行緒函式返回void*)

返回值:

如果函式執行成功返回0,否則會返回乙個錯誤碼。

方法二:利用pthread_detach()函式

其函式原型如下:

#include

int pthread_detach(pthread_t thread);

實現伺服器端的多執行緒SOCKET Server

想要實現的功能 在伺服器端有乙個控制台程式 或者windows服務 與多個客戶端程式通訊,其中主線程有乙個socket繫結在乙個固定埠上,負責監聽客戶端的socket資訊。每當啟動乙個客戶端程式,客戶端傳送來乙個socket連線請求,server端就新開啟乙個執行緒,並在其中建立乙個socket與該...

實現伺服器端的多執行緒SOCKET Server

想要實現的功能 在伺服器端有乙個控制台程式 或者windows服務 與多個客戶端程式通訊,其中主線程有乙個socket繫結在乙個固定埠上,負責監聽客戶端的socket資訊。每當啟動乙個客戶端程式,客戶端傳送來乙個socket連線請求,server端就新開啟乙個執行緒,並在其中建立乙個socket與該...

實現伺服器端的多執行緒SOCKET Server

想要實現的功能 在伺服器端有乙個控制台程式 或者windows服務 與多個客戶端程式通訊,其中主線程有乙個socket繫結在乙個固定埠上,負責監聽客戶端的socket資訊。每當啟動乙個客戶端程式,客戶端傳送來乙個socket連線請求,server端就新開啟乙個執行緒,並在其中建立乙個socket與該...