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與該...