pthread_create源码解析

这篇博客详细介绍了pthread_create在libc库中的实现过程,从__pthread_create_2_1开始,逐步调用create_thread和do_clone。在create_thread中,设置的clone标志包括CLONE_VM、CLONE_FS、CLONE_FILES等,以实现共享内存、文件描述符和信号等POSIX线程特性。同时,讨论了不同clone标志的含义和它们在内核中的行为,如CLONE_PARENT_SETTID和CLONE_CHILD_CLEARTID用于线程ID的传递和清除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

libc 库中 pthread_create  通过层层封装,最终通过调用clone 系统调用创建线程。

libc 代码中:


pthread_create.c中,

函数调用关系 __pthread_create_2_1 -》create_thread-》do_clone


create_thread 函数传递给do_clone 的flag 为 

/* We rely heavily on various flags the CLONE function understands:


     CLONE_VM (共享内存描述符和所有页表), CLONE_FS (共享根目录和当前工作目录所在的表,以及用于屏蔽新文件许可权的位掩码值), CLONE_FILES(共享打开文件表)
These flags select semantics with shared address space and
file descriptors according to what POSIX requires.


     CLONE_SIGNAL
This flag selects the POSIX signal semantics.


     CLONE_SETTLS
The sixth parameter to CLONE determines the TLS area for the
new thread.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值