Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257872
  • 博文数量: 42
  • 博客积分: 2415
  • 博客等级: 大尉
  • 技术积分: 590
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-13 14:14
文章分类

全部博文(42)

文章存档

2018年(1)

2017年(8)

2015年(3)

2012年(4)

2011年(11)

2010年(1)

2009年(5)

2008年(9)

我的朋友

分类: 系统运维

2011-03-21 21:17:18

12.3

...pthread_attr_destory不但释放内存,还要在里边填些东西,这样在调用pthread_create是如果传送了已经释放掉的pthread_attr_t结构,就会返回错误.这种处理方法是比较反传统的,当然不是说不好.

...如果我们不关心一个线程的终止状态,可以将其设为detach状态,表示有os去处理线程退出后的资源,因此,对一个处于detach状态的线程调用pthread_join是非法的.

...pthread_attr_destory不论成功还是失败,应用程序都没有办法处理,所以无需检查这个函数的返回值.

 12.4

...PTHREAD_PROCESS_PRIVATE表示只能在进程内部共享一个mutex,而PTHREAD_PROCESS_SHARED表示可以在多个进程间共享在某个内存区域中分配的mutex,以同步这些进程.

...不要把recursive mutex跟条件变量关联起来使用.因为recursive mutex可能已经被lock了许多次,但是在pthread_cond_wait中只会unlock一次,这时候的mutex可能没有真正释放.

...如果不使用recursive mutex,func1在调用func2之前lock了这个mutex,而在func2中再次lock的时候就会死锁.

 12.5

...线程安全并不等于异步信号安全,也就是说一个函数对于多线程是可重入的,但并不就等于对信号处理也是可重入的.

...操作FILE对象的标准I/O例程都必须是线程安全的,这些例程会在内部调用flockfile与funlockfile.

 12.6

...一个进程中的所有线程可以使用同一个key,每一个线程都要通过这个key跟各自的私有数据区关联起来.也就是说,一个进程里所有需要key的线程所创建的key可以是同一个key,并把各自的私有数据跟这个key关联起来.当然,一个线程创建多个key也是允许的.而对这片数据区的访问是通过pthread_getspecific函数返回的指针进行的,这个指针必然可以保证每个不同的线程是不一样的.

 

12.7

...当线程调用那些可能会等待或者挂起的调用的时候,就会进入取消点.

12.8

...每一个线程可以独立的堵塞信号,但是如果一个线程改变了与某个给定信号相关的处理,那么所有的线程都会共享这一改变.

...除了硬件错误或者定时器事件会传递给引发这一事件的线程外,其余信号会传给任意一个线程.

...调用sigwait前线程必须block相关的信号,否则在线程调用sigwait的过程中如果有信号到来而此时sigwait的调用动作尚未完成,也就是说这时候线程还没有进入等待信号的状态,那么这个信号就有可能丢失.

...在线程中使用sigwait来处理信号而不是传统的信号句柄来处理.

12.9

...在线程中fork的时候,子进程将只存在这个在父进程中调用fork的线程

...子进程将继承父进程所有的锁,但是由于子进程并不包含保持这些锁的子进程,因此子进程无法知道应该那些锁应该解锁.

阅读(1353) | 评论(0) | 转发(0) |
0

上一篇:apue笔记-11

下一篇:apue笔记-13

给主人留下些什么吧!~~