Chinaunix首页 | 论坛 | 博客
  • 博客访问: 968958
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类:

2008-10-18 14:11:45

1.7 Error Handling

Errno不会被清除,除非被一个调用出错重新赋值,所以如果操作没有出错,不要去查看errno,因为它的值应该是以前别的调用产生的。

多线程的影响:多线程由于共享process的地址空间,因此如果只使用一个errno变量,会造成多个线程之间对errno使用的混乱。因此各个thread应该有自己的针对errnolocal copy,即一个process内部的各个thread都应该有自己的一份errno,而且各个thread通过一个函数获取各自threaderrno变量的地址,然后读取其值,而不是直接去访问errno变量,因为这样访问到的可能不是本threadlocal copyerrno变量哦。这种技术叫做TLS。即thread local storage

errno.h中,定义_MT, errno被定义为 (*_errno())   , _errno定义为int * _errno(void);
但是不知道是具体如何实现线程安全的?

1.9 signals

Process运行的时候可以收到其他process发来的signal,可以忽略,采用默认的处理,或者自定义处理方式。被零除就是一种硬件exceptionCtrl+C也会触发quit signal

1.10 time values

UNIX系统维护两种不同类型的时间值

calendar time: 197011000000(UTC)开始算起,以秒为单位。系统数据类型time_t用于记录该时间

process time: 也叫CPU时间,用于衡量一个进程使用的处理器资源,以clock tick为单位。通常1s50,60,或者100ticks。系统数据类型clock_t用于记录该时间

 

UNIX系统对进程维护三种不同类型的时间

clock time: 有时候也叫wall clock time,即进程运行时间。该值与系统运行进程数量有关系

User CPU time: CPU执行用户指令的时间。即CPU执行用户代码的时间

System CPU time: 指进程占用内核的时间。即CPU执行系统(kernel)代码的时间,包括读取文件,从虚拟内存中读取或者写入信息等等

 

User CPU time System CPU time 加起来叫着CPU time

可以使用time命令来测量一个program的上述时间值:

$ cd /usr/include

$ time -p grep _POSIX_SOURCE */*.h > /dev/null

 

   real    0m0.81s

   user    0m0.11s

   sys     0m0.07s

 

1.11 system calls and library functions

System call 提供了一个minal interface, library functions使用system call并且增加了一些处理,更适合应用程序调用。
阅读(864) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~