dining.C
上传用户:shtangtang
上传日期:2007-01-04
资源大小:167k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #define __THREADS_MAIN
  2. #include <thread.h>
  3. #include "philosopher.h"
  4. #include "dining.h"
  5. dining::dining(int p_no)
  6.   p_fork = new mutex[p_no];
  7.   for( philosophers=0;philosophers<p_no;philosophers++ )
  8.     (void)new philosopher(philosophers,p_no,this);
  9. }
  10. dining::~dining()
  11. {
  12.   do {
  13.     cout << philosophers << " are left." << endl;
  14.     p_finish.wait(p_single);
  15.   } while( philosophers-- > 1 );
  16.   cout << "Diner closing." << endl;
  17. }
  18. void dining::finished()
  19. {
  20.   p_single.lock();
  21.   p_finish.signal();
  22.   p_single.unlock();
  23. }
  24. mutex& dining::fork(int p_no)
  25. {
  26.   return p_fork[p_no];
  27. }