我正在尝试使用 clone()创建一个新线程.使用以下代码(…):
那么,简而言之,我的计划做了什么它使用clone创建一个新线程并打印其/ proc / self / status,以便我可以看到它的状态.由于我的线程休眠1秒,因此在咑印/ proc / self / status时它仍处于活动状态.
但是,至少有两件事使我的线程不像普通线程.首先,正如您在上面看到的,进程’pid是10839而我的线程的pid是10840.因此,进程和我的线程没有相同的pid,就像在一个共同的线程中一样.其次,即使在我的线程创建之后,我的进程’/ proc / self / status文件的Threads:字段仍然是1.所以,我的线程似乎不被识别为线程.
我的问题是,我的代码中缺少什么?我需要做些什么才能使我的线程像普通线程一样克隆的第三个参数中是否缺少任何选项?
您可能希朢看到标志CLONE_THREAD,它会将新线程放在与调用进程相同的线程组中.
一旦你给了CLONE_THREAD,它将使新线程与调用进程具有相同的pid和ppid.它用于posix线程.以下是我系统的输絀. LWP专栏说这是一个轻量级的过程,具有不同的TID
请让我知道这可不可以帮你!