当前位置: 技术问答>linux和unix
问个pthread线程库的问题
来源: 互联网 发布时间:2016-10-31
本文导语: 看到书上说,POSIX thread是用户级线程,但是具体实现是OS决定的 这个是线程的多对一模型么?就是多个用户级thread对应一个kernel thread,而不是windwos的一对一模型 如果是多对一的话,pthread线程对kernel其实并不可...
看到书上说,POSIX thread是用户级线程,但是具体实现是OS决定的
这个是线程的多对一模型么?就是多个用户级thread对应一个kernel thread,而不是windwos的一对一模型 如果是多对一的话,pthread线程对kernel其实并不可见,kernel调度的话每次调度到这个process的时候,由pthread库决定要运行哪个thread,这样的话其实并没有提高并发能力啊
求指点linux是怎么调度线程的,kernel里有没有windows那样的代表thread的kernel object,它的并发是怎么实现的?
这个是线程的多对一模型么?就是多个用户级thread对应一个kernel thread,而不是windwos的一对一模型 如果是多对一的话,pthread线程对kernel其实并不可见,kernel调度的话每次调度到这个process的时候,由pthread库决定要运行哪个thread,这样的话其实并没有提高并发能力啊
求指点linux是怎么调度线程的,kernel里有没有windows那样的代表thread的kernel object,它的并发是怎么实现的?
|
POSIX thread是用户级线程,但是具体实现是OS决定的
POSIX是一个标准,符合该标准的,给用户的接口是一样的,比如创建线程:pthread_create函数,但是该函数肯定调用了底层的实现,至于怎么实现的,不同的操作系统是不一样的。windows不知道,Linux下的实现和fork类似,都是调用clone为新进程(线程)准备执行环境,然后等待调度。
POSIX是一个标准,符合该标准的,给用户的接口是一样的,比如创建线程:pthread_create函数,但是该函数肯定调用了底层的实现,至于怎么实现的,不同的操作系统是不一样的。windows不知道,Linux下的实现和fork类似,都是调用clone为新进程(线程)准备执行环境,然后等待调度。