mutex.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. mutex - A class, for process synchronisation.
  15. .SH SYNOPSIS
  16. .B        #include <thread.h>
  17. .sp 2
  18. .B        ...
  19. .sp 0
  20. .B        mutex mut(attributes::process_private)
  21. .sp 0
  22. .B        ...
  23. .SH DESCRIPTION
  24. The
  25. .I mutex
  26. class is a part of the threads C++ library that focuses on
  27. simplifying program threading.
  28. Mutexes provide the means of exclusive access to shared resources
  29. in a parallel environment.  The mutexes created, can be either
  30. created with the
  31. .I attributes::process_shared
  32. attribute, to make the mutex shared between processes, or with
  33. .I attributes::process_private
  34. as shown in the synopsis.  That will make the mutex private to the
  35. specified process and its threads.
  36. For synchronized access, methods are provided to lock and unlock
  37. the mutex and to test and see if it is locked by another process.
  38. .LP
  39. These methods are listed here, with some explanation on how they
  40. function.
  41. .TP 12
  42. .B lock()
  43. This will try and lock the mutex, and return a 0 value to the
  44. calling process if successful.  If not successful, the method
  45. will supsend the calling process, until the mutex is unlocked
  46. and then return.
  47. The behaviour here, is greatly dependant on the kind of mutex
  48. that has been declared.  See
  49. .I kind()
  50. for further information on the mutex kinds available.
  51. .TP 12
  52. .B trylock()
  53. This method will try and lock the mutex, if successful it will
  54. return with a 0 value to signify success.  Else it will return
  55. a EBUSY value, if the mutex is locked by another process.  There
  56. are other return values possible,  such as EDEADLK wich is
  57. possible if the mutex is a
  58. .I mutex_kind::errorcheck
  59. and the process trying to lock it is the same as the one who
  60. already has it locked.
  61. .TP 12
  62. .B unlock()
  63. If the mutex is locked, and the process calling the method is the
  64. owner of the lock, it will be unlocked and a 0 value returned to
  65. signify a successfull unlock operation.  If the mutex is locked
  66. by another process, a EBUSY value will be returned unless the
  67. mutex is a
  68. .I mutex_kind::errorcheck
  69. in which casse the returned value will be EPERM to signify that
  70. there is no permission to unlock it.
  71. .TP 12
  72. .B kind()
  73. This method tells the calling process the kind of mutex, it is
  74. communicating with.  The possible values are:
  75. .RS 12
  76. .TP 12
  77. .I fast 
  78. the mutex can be locked only once.
  79. .TP 12
  80. .I recursive 
  81. the mutex can be locked several times by its owner.
  82. .TP 12
  83. .I errorcheck 
  84. same as fast, but does some simple checking.
  85. .RE
  86. .TP 12
  87. .B kind(mutex::mutex_kind)
  88. Sets the mutex kind to the paremeter passed, and returns the
  89. value the mutex was set to prior to the call.  This enables
  90. a program to set the
  91. .I errorcheck
  92. kind, and returning it to its original state after use.
  93. .LP
  94. In a shared environment, it may be desired that mutex variable
  95. resources be addressed differently from other resources belonging
  96. to a process.
  97. .TP 12
  98. .B project_part(const char *)
  99. Give all resources that are of type mutex, a name
  100. that identifies them seperately, yet still branched from the
  101. main process.  The passed arguement is a branch name, that will
  102. identify all created mutexes.  This is a static
  103. method, that will apply to all mutexes created after
  104. the call.
  105. .LP
  106. Suggestions and questions about the threads library should be
  107. directed to
  108. .IP
  109. kdb-list@brevet.nu
  110. .LP
  111. Or, to the specified author below. The threads home page is located at:
  112. .IP
  113. http://user.tninet.se/~dpn659b/threads.html
  114. .LP
  115. .SH AUTHOR
  116. Version 2.0
  117. Copyright (C) 1999-2000 Orn E. Hansen <oe.hansen@gamma.telenordia.se>.
  118. .LP
  119. Thanks to those who reported their suggestions on how to
  120. improve the threads library.