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

Linux/Unix编程

开发平台:

Unix_Linux

  1. ." Copyright (c) 1999-2000 Orn E. Hansen <oe.hansen@gamma.telenordia.se>
  2. ."
  3. ." Permission is granted to make and distribute verbatim copies of this
  4. ." manual provided the copyright notice and this permission notice are
  5. ." preserved on all copies.
  6. ."
  7. ." Permission is granted to copy and distribute modified versions of this
  8. ." manual under the conditions for verbatim copying, provided that the
  9. ." entire resulting derived work is distributed under the terms of a
  10. ." permission notice identical to this one
  11. ."                                                                            
  12. .TH THREADS 3 "10 Feb 2000" "Threads 2.0" "Threads C++ Library"
  13. .SH NAME
  14. cond - A class, for process synchronisation.
  15. .SH SYNOPSIS
  16. .B        #include <thread.h>
  17. .sp 2
  18. .B        ...
  19. .sp 0
  20. .B        cond variable(attributes::process_private);
  21. .sp 0
  22. .B        ...
  23. .SH DESCRIPTION
  24. The
  25. .I cond
  26. class is a part of the threads C++ library that focuses on
  27. simplifying program threading.
  28. The cond class, provides means to pass conditions over to a different
  29. thread or process.  It can be initialized as working only within the
  30. process of its creation, and associated threads.  Or to share its
  31. resources with other processes that so desire.  This can be accomplished
  32. by specifying either
  33. .I attributes::process_shared
  34. as the initializing parameter, to create a shared condition variable,
  35. or
  36. .I attributes::process_private
  37. as shown in the synopsis above, to create a variable that is only
  38. viewable within the current process tree.
  39. .LP
  40. These methods are listed here, with some explanation on how they
  41. function.
  42. .TP 12
  43. .B wait(mutex&)
  44. The mutex passed, is assumed locked on entry and owned by the
  45. calling process.  The method then unlocks the mutex, and enters
  46. a state of suspension, until a signal is received through the
  47. .I signal()
  48. method, when it will relock the mutex and return to the calling
  49. process.
  50. .TP 12
  51. .B timedwait(mutex&, struct timespec *)
  52. Again, as in above, the mutex is assumed locked and owned by the
  53. calling process ( it is upon the user to make sure that this is
  54. the case ).  The process immediately unlocks the mutex, and enters
  55. a state of slumber until a signal is recieved, as in the case
  56. of
  57. .I wait(mutex&)
  58. However, the difference here is that the method will only wait until
  59. a specified timetick has been reached.  If this timetick is
  60. reached before the condition variable is able to achieve a
  61. signal, it will return with a ETIMEDOUT, or a EINTR if it received
  62. a cancel signal while inside the wait loop.  If a signal occurs,
  63. the returned value will be 0.
  64. .TP 12
  65. .B timedwait_rel(mutex&, struct timespec *)
  66. This method is very similar to the above, it only differs from the
  67. above method in that the
  68. .I struct timespec *
  69. actually points to a specification of a relative time.  Giving the
  70. period, that the method is supposed to wait, instead of the
  71. actual moment.  In all other respects, including the returned
  72. values, it is equivalent to the above.
  73. .TP 12
  74. .B signal()
  75. All processes that are waiting on a given condition variable, are
  76. put into a buffer, and when this method is called, the process
  77. that first enter the wait state on the variable will be awakened,
  78. in a FIFO manner.
  79. .TP 12
  80. .B broadcast()
  81. This method will awaken all processes, that are waiting on the
  82. given condition variable.  Effectively emptying the buffer.
  83. .LP
  84. In a shared environment, it may be desired that condition variable
  85. resources be addressed differently from other resources belonging
  86. to a process.
  87. .TP 12
  88. .B project_part(const char *)
  89. Give all resources that are of type condition variables, a name
  90. that identifies them seperately, yet still branched from the
  91. main process.  The passed arguement is a branch name, that will
  92. identify all created condition variables.  This is a static
  93. method, that will apply to all condition variables created after
  94. the call.
  95. .LP
  96. Suggestions and questions about the threads library should be
  97. directed to:
  98. .IP
  99. kdb-list@brevet.nu
  100. .LP
  101. Or, to the author specified below.  The threads home page is located at:
  102. .IP
  103. http://user.tninet.se/~dpn659b/threads.html
  104. .LP
  105. .SH AUTHOR
  106. Version 2.0
  107. Copyright (C) 1999-2000 Orn E. Hansen <oe.hansen@gamma.telenordia.se>.
  108. .LP
  109. Thanks to those who reported their suggestions on how to
  110. improve the threads library.