最近研究Mysql源代码,其基于 One thread per connection现在我们通过对Linux下的线程模型的学习来串起一系列的知识点:linux支持的三种线程模型:1,linux Threads,这是linux标准的的线程库,但是与IEEE的POSIX不兼容.2.Native POSIX Thread Library(简称NPTL,原生的POSIX线程库),这个线程库是RedHat开发的,支持clone()线程的系统调用,在REDHAT (KERNEL 2.6)Linux 默认是这个库.3.Next Generation POSIX Thread(NGPT)由IBM开发的与标准的POSIX线程库兼容.但是IBM表示可能会在将来不会进行继续开发.可以肯定的是NPTL要比LT给力得多哈!
你可以通过下面的命令来确定你的系统所支持的各个glic库的线程实现模型:* 当然我们可以使用getconf命名简单的获得pthread的版本但这无法引出更多的知识点,getconf命令如下:www.linuxidc.com@linuxidc:/lib/x86_64-linux-gnu$ getconf GNU_LIBPTHREAD_VERSION
NPTL 2.13我的Linux 为Ubuntu11.04,测试如下:(cat /etc/issue 可以看ubuntu的版本号)以MYSQL数据库为列子.知识点一:首先我介绍怎么知道系统都有那些动态链接库,以动态链接库路径的查找顺序:ldconfig -p 可以打印出ldconfig的缓存/etc/ld.so.cache知识点二:
linux下动态链接库的查找顺序是:
1.LD_LIBRARY_PATH下的库
2.系统缺省库路径/lib and /usr/lib
3./etc/ld.so.conf 里指定的一系列路径。知识点三:线程库是在GLIBC库里实现的,文件名为libc.so.6,我机器上的版本是2.13,其实libc.so.6只是一个符号链接。用file命令查看它。 www.linuxidc.com@linuxidc:/lib/x86_64-linux-gnu$ file libc.so.6
libc.so.6: symbolic link to `libc-2.13.so"我们先用ldd 查看我mysqldwww.linuxidc.com@linuxidc:/usr/sbin$ ldd mysqld
linux-vdso.so.1 => (0x00007fff57bff000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa74dd8d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa74db75000)
libwrap.so.0 => /lib/libwrap.so.0 (0x00007fa74d969000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa74d765000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fa74d52c000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa74d225000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa74cfa0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa74cc0c000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa74eb92000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fa74c9f1000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa74c7db000)
可以知道我们的mysqld使用的是libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 ,(我的Ubuntu是64位版本)。
进到该目录,查看具体的线程库名称:www.linuxidc.com@linuxidc:/lib/x86_64-linux-gnu$ ./libc.so.6 | grep [Tt]hreads
Native POSIX Threads Library by Ulrich Drepper et al
MySQL 使用GROUP_CONCAT实现统计报表使用automake自动生成Makefile相关资讯 Linux资料
- Linux触发连锁反应,惠及全球 (04/25/2012 05:49:29)
- 【Linux】pam常用模块及意义 (04/18/2012 09:42:50)
- 【Linux】配置Apache的别名的pam认 (04/18/2012 09:40:21)
| - 如何挂载只读的Linux文件系统 (04/19/2012 06:10:57)
- 【Linux】ftp服务的ftpusers黑名单 (04/18/2012 09:42:02)
- Linux 0.11 在Ubuntu-11和gcc-4.6. (04/14/2012 11:06:44)
|
本文评论 查看全部评论 (0)