设为首页 加入收藏

TOP

6.8 扩展线程接口类(3)
2013-10-07 13:00:26 来源: 作者: 【 】 浏览:57
Tags:6.8 扩展 线程 接口

6.8  扩展线程接口类(3)

在程序清单6-5中,创建了4个filter_threads。下面是程序清单6-5的输出:

  1. Proteus:Stand Alone Complex:32  
  2.                 
  3. ----------------------  
  4.  priority:  7  
  5. ----------------------  
  6.  policy:    FIFO priority:5  
  7.  state:      policy:    DETACHEDFIFO  
  8.                 
  9.  scope:      state:     PROCESSJOINABLE  
  10.                 
  11.                 
  12.  scope:     SYSTEM  
  13.                 
  14. Krell Space:4  
  15. ----------------------  
  16.  priority:  3  
  17.  policy:    OTHER  
  18.  state:     JOINABLE  
  19.  scope:     PROCESS  
  20.                 
  21. Cylon Space:5  
  22. ----------------------  
  23.  priority:  2  
  24.  policy:    FIFO  
  25.  state:     JOINABLE  
  26.  scope:     PROCESS 

主线程不等待分离的线程(Proteus),输出有一些混乱。Proteus开始进行输出,然后被来自Stand Alone Complex的输出打断。如前所述,标准cout不是线程安全的。如果所有的线程都是可结合的,那么输出将会像您所期望的那样:

  1. Proteus:2  
  2. ----------------------  
  3.  priority:  7  
  4.  policy:    FIFO  
  5.  state:     JOINABLE  
  6.  scope:     PROCESS  
  7.                 
  8. Stand Alone Complex:3  
  9. ----------------------  
  10.  priority:  5  
  11.  policy:    FIFO  
  12.  state:     JOINABLE  
  13.  scope:     SYSTEM  
  14.                 
  15. Krell Space:4  
  16. ----------------------  
  17.  priority:  3  
  18.  policy:    OTHER  
  19.  state:     JOINABLE  
  20.  scope:     PROCESS  
  21.                 
  22. Cylon Space:5  
  23. ----------------------  
  24.  priority:  2  
  25.  policy:    FIFO  
  26.  state:     JOINABLE  
  27.  scope:     PROCESS 

程序概要6-2

程序名:

  1. program6-2.cc 

描述:

示范filter_thread类的使用。创建了4个线程,对每个线程进行了命名。每个线程调用更改将要创建的线程的一些属性的方法。

必需的库:

  1. libpthread 

必需的头文件:

  1. thread_object.h 

编译和链接指令:

  1. c++ -o program6-2 program6-2.cc thread_
    object.cc filter_thread.cc -lpthread 

测试环境:

  1. Solaris 10、gcc 3.4.3和gcc 3.4.6 

处理器:

  1. AMD Opteron和UltraSparc T1 

执行指令:

  1. ./program6-2 

thread_object类封装了线程属性对象的部分功能。filter_thread是用户线程,它继承了thread_object并定义了do_something( ),该函数由线程执行。在第7章中,将会再次扩展这个类的功能,以构成用作流水线模型中的一部分的assertion类。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.7.5 使用sysconf( ) 下一篇6.8 扩展线程接口类(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: