diff --git a/_posts/linux/进程线程协程/看完这篇,彻底区分进程线程协程.md b/_posts/linux/进程线程协程/看完这篇,彻底区分进程线程协程.md index f38ee6d..eaae817 100644 --- a/_posts/linux/进程线程协程/看完这篇,彻底区分进程线程协程.md +++ b/_posts/linux/进程线程协程/看完这篇,彻底区分进程线程协程.md @@ -128,7 +128,7 @@ ##### 缺点 -- 内核级线程切换开销较大。因为每次线程切换都要从用户态切换到内核态, 代价要比用户级线程大很多。 +- 内核级线程调度开销较大。调度内核线程的代价可能和调度进程差不多昂贵,代价要比用户级线程大很多。 - 线程表是存放在操作系统固定的表格空间或者堆栈空间里,所以内核级线程的数量是有限的。 diff --git a/_posts/linux/进程线程协程/进程线程协程.drawio b/_posts/linux/进程线程协程/进程线程协程.drawio index b865e0b..3806705 100644 --- a/_posts/linux/进程线程协程/进程线程协程.drawio +++ b/_posts/linux/进程线程协程/进程线程协程.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file