【发布时间】:2012-08-22 14:56:51
【问题描述】:
我已经完成了strace(1) 的pthread_create(3)。它间接调用clone(2)系统调用。
它将在那里设置以下标志:(我使用的是 i386 GNU/Linux (Mint 13))
CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID
我对所有这些标志都很满意。但我的问题是为什么pthread_create() 设置CLONE_CHILD_CLEARTID 标志?据我所知,CLONE_CHILD_SETTID 将在子内存中的位置 ctid 设置子线程 id,CLONE_CHILD_CLEARTID 将在子退出时将其删除。
(因为没有设置CLONE_CHILD_SETTID标志,那为什么CLONE_CHILD_CLEARTID?)
真的需要吗?当我们想要使用clone(2) 实现pthread_create() 的功能时,我们应该设置哪些理想的标志?
该领域的初学者。
【问题讨论】:
标签: linux multithreading pthreads clone