簡體   English   中英

線程如何同步它們的操作?

[英]How can threads synchronize their operation?

線程如何同步它們的操作? 由於同一進程內的線程共享資源,線程如何才能不干擾其他線程? 請用通俗易懂的語言解釋。 感謝所有專家!

想象一扇狹窄的門,人們一次只能通過這扇門。 有時人太多時,他們會排成一隊。 正確編程的線程也是如此 - 它們遵守約定,例如在門被占用時不要試圖通過門。 編程不當的線程以及不禮貌的人可能會忽略約定並造成混亂。

多線程編程中的主要抽象是資源——最多可以屬於一個線程的內存區域。 線程請求資源,等待它們,擁有它們 - 並且只能在欠缺時讀取或寫入該內存 - 並釋放它們。

有許多用於處理資源的同步原語,最重要的是信號量、監視器和阻塞隊列。

想要設計多線程程序的程序員,首先要計划好使用什么樣的資源,以及線程如何交換這些資源。 然后選擇將使用哪些標准同步設施,或設計新設施並對其進行編程。 專門的設施通常是用監視器制作的。

多線程編程的教學通常從如何使用監視器進行線程交互開始。 這是錯誤的。 學生首先要掌握標准手段的使用——信號量和阻塞隊列,這些都足以應付95%的情況,然后才學會使用監視器設計專門的設施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM