Chinaunix首页 | 论坛 | 博客
  • 博客访问: 196446
  • 博文数量: 96
  • 博客积分: 1781
  • 博客等级: 上尉
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-07 12:31
文章分类

全部博文(96)

文章存档

2014年(1)

2013年(14)

2012年(44)

2011年(37)

分类: LINUX

2012-07-04 09:30:33

 由于项目中在多线程里使用了fifo作为数据传输的通道,所以对fifo进行测试。

1)在进程测试中,A线程生成和写fifo,B线程读fifo。

   (1)首先fifo的使用需要root权限,这个需要注意。

   (2)先运行A线程,会在打开写fifo线程时阻塞,直到B线程打开读fifo。这时可以正常写和读。

   (3)在写的间隔慢于读的间隔时,读会阻塞等待。但在写的间隔快于读的间隔时,如果此时每次读的数据量多于每次写的数据量,则一次可以读取多此写的数据。

   (4)如果B进程终止,那么A线程会收到SIGFIFO信号,终止程序。

   (5)如果A进程终止,那么B线程会读取完管道内存在的数据,如果继续读取,则read程序立即返回0.

2)在多线程测试中,情况和进程有不同。

    (1)同上面(1)

    (2)写多线程和读多线程之间阻塞和上面相同,需要同时打开读写才可以继续前进。

    (3)当读线程退出时,写线程没有收到SIGFIFO信号,继续写,但此时实际上并没有写成功。

    (4)当写线程退出时,这是读线程不是返回0,而是读等待,这些表现和进程是有区别的。

阅读(486) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~