linux pthread 实现,如何在Linux内核3.2中实现pthread?

本文探讨了在Ubuntu 12.04内核3.2环境下,`Unix环境中的高级编程`中关于线程创建的代码示例。作者发现与书中的预期不同,新线程和主线程并未显示不同的进程ID。文章深入分析了Linux内核更新如何可能影响pthread线程的底层实现。
摘要由CSDN通过智能技术生成

所有,

下面的代码来自“ Unix环境中的高级编程”,它创建一个新线程,并打印主线程和新线程的进程ID和线程ID。

在书中,它表示在linux中,此代码的输出将显示两个线程具有不同的进程ID,因为pthread使用轻量级进程来模拟线程。但是,当我在Ubuntu

12.04中运行此代码时,它具有内核3.2,并打印了相同的pid。

那么,新的Linux内核是否会更改pthread的内部实现?

#include "apue.h"

#include

pthread_t ntid;

void printids(const char *s) {

pid_t pid;

pthread_t tid;

pid = getpid();

tid = pthread_self();

printf("%s pid %u tid %u (0x%x)\n",

s, (unsigned int)pid, (unsigned int)tid, (unsigned int)tid);

}

void *thread_fn(void* arg) {

printids("new thread: ");

return (void *)0;

}

int main(void) {

int err;

err = pthread_create(&ntid, NULL, thread_fn, NULL);

if (err != 0)

err_quit("can't create thread: %s\n", strerror(err));

printids("main thread: ");

sleep(1);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值