為什麼引入線程?

General 更新 2024-05-18

為什麼要在操作系統中引入線程

您好:

在多道程序環境下,程序的執行屬於併發執行,此時它們將失去其封閉性。並具有間斷性及不可再現性的特徵。這就決定了通常的程序是不能併發執行的而程序的順序執行使系統資源利用率低,為此引入線程

為什麼要在os中引入線程

線程可以增加併發的程度啊。其實多進程也是可以併發,但是為什麼要是線程呢?因為線程是屬於進程的,是個輕量級的對象。所以再切換線程時只需要做少量的工作,而切換進程消耗很大。這是從操作系統角度講。 從用戶程序角度講,有些程序在邏輯上需要線程,比如掃雷,它需要一個線程等待用戶的輸入,另一個線程的來更新時間。還有一個例子就是聊天程序,一個線程是響應用戶輸入,一個線程是響應對方輸入。如果沒有多線程,那麼只能你說一句我說一句,你不說我這裡就不能動,我還不能連續說。所以用戶程序有這種需要,操作系統就要提供響應的機制

客戶端為什麼要引入多線程

不用多線程的話

就會卡死

線程執行堵塞式的操作

就是這個操作未開始或未結束你都不能做任何事情

為什麼在操作系統中要引入線程

在多道程序環境下,程序的執行屬於併發執行,此時它們將失去其封閉性。並具有間斷性及不可再現性的特徵。這就決定了通常的程序是不能併發執行的而程序的順序執行使系統資源利用率低,為此引入線程

在多線程中,為什麼要引入同步機制

不加入線程的同步,可能導致衝突異常,不應該訪問的,被訪問,或者數據被無故修改

java在多線程中為什麼要引入同步機制

不同步會造成數據訪問混亂達不到目的效果:比如

某一趟火車賣的坐票是確定的吧? 如果沒有同步的話 因為每一個賣票的窗口就相當與一個線程,就會出現同一時間多出窗口賣出同一張票。。。。。。。

如果有了同步就好比多了一道驗證:一旦有線程(窗口)在執行賣票這段程序時其他線程(窗口)就先得這個線程(窗口)執行完才能執行。。。

線程與實際運行程序的區別,為什麼要引入線程

在多道程序環境下,程序的執行屬於併發執行,此時它們將失去其封閉性。並具有間斷性及不可再現性的特徵。這就決定了通常的程序是不能併發執行的而程序的順序執行使系統資源利用率低,為此引入線程

在操作系統中引入線程概念的主要目的是處理進程與進程之間的競爭????

線程是輕量進程,也就是說線程是屬於進程的一部分,一個進程裡面可以用多個線程,主要目的就是萎瞭解決進程資源的競爭了。

線程只是進程中的模塊,或者更細的部件,不過可以幫助解決進程之間的資源競爭。

在JAVA中線程到底起到什麼作用

這是javaeye上非常經典的關於線程的帖子,寫的非常通俗易懂的,適合任何讀計算機的同學.

線程同步

我們可以在計算機上運行各種計算機軟件程序。每一個運行的程序可能包括多個獨立運行的線程(Thread)。

線程(Thread)是一份獨立運行的程序,有自己專用的運行棧。線程有可能和其他線程共享一些資源,比如,內存,文件,數據庫等。

當多個線程同時讀寫同一份共享資源的時候,可能會引起衝突。這時候,我們需要引入線程“同步”機制,即各位線程之間要有個先來後到,不能一窩蜂擠上去搶作一團。

同步這個詞是從英文synchronize(使同時發生)翻譯過來的。我也不明白為什麼要用這個很容易引起誤解的詞。既然大家都這麼用,咱們也就只好這麼將就。

線程同步的真實意思和字面意思恰好相反。線程同步的真實意思,其實是“排隊”:幾個線程之間要排隊,一個一個對共享資源進行操作,而不是同時進行操作。

因此,關於線程同步,需要牢牢記住的第一點是:線程同步就是線程排隊。同步就是排隊。線程同步的目的就是避免線程“同步”執行。這可真是個無聊的繞口令。

關於線程同步,需要牢牢記住的第二點是 “共享”這兩個字。只有共享資源的讀寫訪問才需要同步。如果不是共享資源,那麼就根本沒有同步的必要。

關於線程同步,需要牢牢記住的第三點是,只有“變量”才需要同步訪問。如果共享的資源是固定不變的,那麼就相當於“常量”,線程同時讀取常量也不需要同步。至少一個線程修改共享資源,這樣的情況下,線程之間就需要同步。

關於線程同步,需要牢牢記住的第四點是:多個線程訪問共享資源的代碼有可能是同一份代碼,也有可能是不同的代碼;無論是否執行同一份代碼,只要這些線程的代碼訪問同一份可變的共享資源,這些線程之間就需要同步。

為了加深理解,下面舉幾個例子。

有兩個採購員,他們的工作內容是相同的,都是遵循如下的步驟:

(1)到市場上去,尋找併購買有潛力的樣品。

(2)回到公司,寫報告。

這兩個人的工作內容雖然一樣,他們都需要購買樣品,他們可能買到同樣種類的樣品,但是他們絕對不會購買到同一件樣品,他們之間沒有任何共享資源。所以,他們可以各自進行自己的工作,互不干擾。

這兩個採購員就相當於兩個線程;兩個採購員遵循相同的工作步驟,相當於這兩個線程執行同一段代碼。

下面給這兩個採購員增加一個工作步驟。採購員需要根據公司的“布告欄”上面公佈的信息,安排自己的工作計劃。

這兩個採購員有可能同時走到布告欄的前面,同時觀看布告欄上的信息。這一點問題都沒有。因為布告欄是隻讀的,這兩個採購員誰都不會去修改布告欄上寫的信息。

下面增加一個角色。一個辦公室行政人員這個時候,也走到了布告欄前面,準備修改布告欄上的信息。

如果行政人員先到達布告欄,並且正在修改布告欄的內容。兩個採購員這個時候,恰好也到了。這兩個採購員就必須等待行政人員完成修改之後,才能觀看修改後的信息。

如果行政人員到達的時候,兩個採購員已經在觀看布告欄了。那麼行政人員需要等待兩個採購員把當前信息記錄下來之後,才能夠寫上新的信息。

上述這兩種情況,行政人員和採購員對布告欄的訪問就需要進行同步。因為其中一個線程(行政人員)修改了共享資源(布告欄)。而且我們可以看到,行政人員的工作流程和採購員的工作流程(執行代碼)完全不同,但是由於他們訪問了同一份可變共享資源(布告欄),所以他們之間需要同步。

同步鎖

前面講了為什麼要線程同步,下面我們就來看如何才能線程同步。

線程同步的基本實現思路還是比較容易理解的。我們可以給共享資源加一把鎖,這把鎖只有一把......

相關問題答案
為什麼引入線程?
為什麼引入有源濾波器?
為什麼實現線程同步的?
為什麼加入廣汽傳祺?
自問當初為什麼要入黨?
我為什麼不上線廣場舞?
穿越火線為什麼老掉線?
大學生你為什麼要入黨?
為什麼輸入網址打不開?
為什麼選擇工程造價?