首页 / LINUX / Linux 线程实现
Linux 线程实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux 线程实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1585字,纯文字阅读大概需要3分钟。
内容图文
文章目录
一、Linux 线程的独特之处
在 Window 或 Solaris 等操作系统的内核提供了专门实现线程的机制,但 Linux 没有。Linux 创建线程的方式跟创建进程的方式很相似。比如要在一个进程里创建 n 个进程,Linux 仅仅创建 n 个进程并分配 n 个普通的进程描述符 task_struct
。只不过这 n 个进程跟其他进程共享的资源跟普通进程不同罢了。总之,在 Linux 中,线程和进程的差别不大。
二、Linux 线程与进程的异同
区别一,进程创建的系统调用是 fork()
,线程创建的系统调用是 clone()
,但一般调用遵从 POSIX 标准的 pthread 库的 pthread_create()
函数创建线程。
共同点是,进程创建过程和线程创建过程都是依据父进(线)程创建新进(线)程的过程,都要调用 clone()
函数创建新进(线)程,都要向 clone()
函数传递参数标志指明新进(线)程与其父(线)进程共享哪些资源。
为了方便阐述,我们暂且把进程和线程都统称为执行过程。
不同点是,在不考虑写时复制的情况下,从一个父执行过程创建一个新执行过程时,如果这两个执行过程共享被指定共享的资源只有信号处理函数,则这两个执行过程都是进程;若被指定共享的资源除了信号处理函数外,还有虚拟地址空间、文件系统资源和文件描述符,那这两个执行过程都是线程。
三、进程、线程创建时的参数标志
Linux 创建进程或线程时都会调用 clone()
函数,且共享哪些资源是由传递给 clone()
函数的参数标志指定的。这些参数标志定义在 <linux/sched.h>
。
四、Linux 内核线程
内核线程与普通线程的区别在于内核线程没有独立的地址空间(mm
指针被设置为 NULL
),因此每个内核线程共享的资源比普通线程共享的资源少一种——虚拟地址空间资源。
一般情况下,内核线程会将它在创建时得到的函数永远执行下去。
五、参考资料
内容总结
以上是互联网集市为您收集整理的Linux 线程实现全部内容,希望文章能够帮你解决Linux 线程实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。