日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

线程的切入和切出(切入: 一个线程被系统选中占用处理器开始或继续运行)

發布時間:2025/6/17 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程的切入和切出(切入: 一个线程被系统选中占用处理器开始或继续运行) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。 本文鏈接:https://blog.csdn.net/dh554112075/article/details/90696768

什么是上下文切換?

CPU通過分配時間片來執行任務,當一個任務的時間片用完,就會切換到另一個任務。在切換之前會保存上一個任務的狀態,當下次再切換到該任務,就會加載這個狀態。
——任務從保存到再加載的過程就是一次上下文切換。

切出: 一個線程被剝奪處理器的使用權而被暫停運行
切入: 一個線程被系統選中占用處理器開始或繼續運行

——上圖的進度信息就是上下文,一般包括通用寄存器和程序計數器的內容。在切出時,操作系統會將線程的進度信息保存到內存。在切入時,操作系統需要從內存中加載線程的上下文。

什么時候會發生上下文切換?

按導致上下文切換的因素劃分,可將上下文切換分為兩點:

  • 自發性上下文切換
  • 非自發性上下文切換

自發性上下文切換指線程由于自身因素導致的切出。
通過調用下列方法會導致自發性上下文切換:

  • Thread.sleep()
  • Object.wait()
  • Thread.yeild()
  • Thread.join()
  • LockSupport.park()

非自發性上下文切換指線程由于線程調度器的原因被迫切出。
發生下列情況可能導致非自發性上下文切換:

  • 切出線程的時間片用完
  • 有一個比切出線程優先級更高的線程需要被運行
  • 虛擬機的垃圾回收動作

上下文切換的開銷

上下文切換的開銷包括直接開銷和間接開銷。
直接開銷有如下幾點:

  • 操作系統保存恢復上下文所需的開銷
  • 線程調度器調度線程的開銷

間接開銷有如下幾點:

  • 處理器高速緩存重新加載的開銷
  • 上下文切換可能導致整個一級高速緩存中的內容被沖刷,即被寫入到下一級高速緩存或主存

以上內容是對Java多線程編程實戰指南的總結

</div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet"></div>

總結

以上是生活随笔為你收集整理的线程的切入和切出(切入: 一个线程被系统选中占用处理器开始或继续运行)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。