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

Linux/Unix编程

开发平台:

Unix_Linux

  1. //
  2. // This example demonstrates semaphores.
  3. //
  4. #include <thread.h>
  5. #include <thread_semaphore.h>
  6. #include <string>
  7. class typeit : public pthread {
  8. protected:
  9.   semaphore t_sem;
  10.   string s;
  11.   int i;
  12. public:
  13.   typeit() { t_sem.wait(); i=0; t_sem.post(); };
  14.   ~typeit() { };
  15.   char text() 
  16.     {
  17.       if ( t_sem.trywait() >= 0 )
  18. return s[i++];
  19.       return 0;
  20.     }
  21.   int thread(void *) 
  22.     {
  23.       int n=0;
  24.       char buf[80];
  25.       cout << "launched" << endl;
  26.       cin.getline(buf,80);
  27.       n = strlen(buf);
  28.       while( n-- > 0 )
  29. t_sem.post();
  30.       s = buf;
  31.       return 0;
  32.     }
  33. };
  34. int main()
  35. {
  36.   char ch=0;
  37.   typeit data;
  38.   while( (ch=data.text()) != 0 )
  39.     cout << ch;
  40.   cout << "." << endl;
  41.   exit(0);
  42. }