C++ concurrency in action 读随记1
程序员文章站
2022-04-14 23:29:59
翻了翻,感觉标准库支持的并发应该是kernel level 的(书里也没有明确写,不过他写了诸如“操作系统来安排”“需要知道硬件支持多少线程”等等话语,所以猜测是kernel的。kernel level就是操作系统知道代码定义了几个线程并且知道硬件支持多少线程,可以的话就会安排上去,不会像user ......
翻了翻,感觉标准库支持的并发应该是kernel level 的(书里也没有明确写,不过他写了诸如“操作系统来安排”“需要知道硬件支持多少线程”等等话语,所以猜测是kernel的。kernel level就是操作系统知道代码定义了几个线程并且知道硬件支持多少线程,可以的话就会安排上去,不会像user level定义的线程全靠用户自己定义的task switch,操作系统只认为这是一个单线程的进程,只安排给它一个处理单元(应该是一个 processor)。
另外从作者在书里写的c++是语言里最底层的,不需要一门更底层的语言这话来看。。。也应该支持kernel level的并发。。。。
这里涉及两个问题,一个是c11标准库支持的并发是user level还是kernel level,以及二者的定义。
希望我两个问题都没有理解错。
ps: 这个中英文对照也很有意思,大概是 CPU---*处理器 processor-----处理器 core(processing unit/core)----核心 如果是一个 4 dual-core processor的处理器,我觉得中文翻译应该是4核8线程的处理器,此核非彼核,有意思。
在我理解里就是,processor运行一个进程,core处理一个线程(当然科学一点讲,涉及很多知识。。懒得去复习。。)。那有一个问题就是,如果一个单线程的进程被一个双线程(1 dual-core processor)的处理器运行着,那是不是这个处理器的另一个线程就浪费了。。。因为别的进程的线程讲道理不能被安排进来。又或者难道一个core就可以单独运行一个进程????