我做了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?)
真的需要吗?pthread_create()当我们想要实现using的功能时,我们应该设置哪些理想的标志clone(2)?
该领域的初学者。