/share/man/man3/pthread_create.3

https://bitbucket.org/freebsd/freebsd-head/ · Unknown · 129 lines · 129 code · 0 blank · 0 comment · 0 complexity · ecc3f24dce7bbb21d0a41c040056048c MD5 · raw file

  1. .\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
  2. .\" All rights reserved.
  3. .\"
  4. .\" Redistribution and use in source and binary forms, with or without
  5. .\" modification, are permitted provided that the following conditions
  6. .\" are met:
  7. .\" 1. Redistributions of source code must retain the above copyright
  8. .\" notice, this list of conditions and the following disclaimer.
  9. .\" 2. Redistributions in binary form must reproduce the above copyright
  10. .\" notice, this list of conditions and the following disclaimer in the
  11. .\" documentation and/or other materials provided with the distribution.
  12. .\" 3. All advertising materials mentioning features or use of this software
  13. .\" must display the following acknowledgement:
  14. .\" This product includes software developed by John Birrell.
  15. .\" 4. Neither the name of the author nor the names of any co-contributors
  16. .\" may be used to endorse or promote products derived from this software
  17. .\" without specific prior written permission.
  18. .\"
  19. .\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
  20. .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  21. .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  22. .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  23. .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  24. .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  25. .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  26. .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  27. .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  28. .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  29. .\" SUCH DAMAGE.
  30. .\"
  31. .\" $FreeBSD$
  32. .\"
  33. .Dd November 4, 2006
  34. .Dt PTHREAD_CREATE 3
  35. .Os
  36. .Sh NAME
  37. .Nm pthread_create
  38. .Nd create a new thread
  39. .Sh LIBRARY
  40. .Lb libpthread
  41. .Sh SYNOPSIS
  42. .In pthread.h
  43. .Ft int
  44. .Fn pthread_create "pthread_t *thread" "const pthread_attr_t *attr" "void *(*start_routine)(void *)" "void *arg"
  45. .Sh DESCRIPTION
  46. The
  47. .Fn pthread_create
  48. function is used to create a new thread, with attributes specified by
  49. .Fa attr ,
  50. within a process.
  51. If
  52. .Fa attr
  53. is
  54. .Dv NULL ,
  55. the default attributes are used.
  56. If the attributes specified by
  57. .Fa attr
  58. are modified later, the thread's attributes are not affected.
  59. Upon
  60. successful completion
  61. .Fn pthread_create
  62. will store the ID of the created thread in the location specified by
  63. .Fa thread .
  64. .Pp
  65. The thread is created executing
  66. .Fa start_routine
  67. with
  68. .Fa arg
  69. as its sole argument.
  70. If the
  71. .Fa start_routine
  72. returns, the effect is as if there was an implicit call to
  73. .Fn pthread_exit
  74. using the return value of
  75. .Fa start_routine
  76. as the exit status.
  77. Note that the thread in which
  78. .Fn main
  79. was originally invoked differs from this.
  80. When it returns from
  81. .Fn main ,
  82. the effect is as if there was an implicit call to
  83. .Fn exit
  84. using the return value of
  85. .Fn main
  86. as the exit status.
  87. .Pp
  88. The signal state of the new thread is initialized as:
  89. .Bl -bullet -offset indent
  90. .It
  91. The signal mask is inherited from the creating thread.
  92. .It
  93. The set of signals pending for the new thread is empty.
  94. .El
  95. .Sh RETURN VALUES
  96. If successful, the
  97. .Fn pthread_create
  98. function will return zero.
  99. Otherwise an error number will be returned to
  100. indicate the error.
  101. .Sh ERRORS
  102. The
  103. .Fn pthread_create
  104. function will fail if:
  105. .Bl -tag -width Er
  106. .It Bq Er EAGAIN
  107. The system lacked the necessary resources to create another thread, or
  108. the system-imposed limit on the total number of threads in a process
  109. [PTHREAD_THREADS_MAX] would be exceeded.
  110. .It Bq Er EPERM
  111. The caller does not have appropriate permission to set the required scheduling
  112. parameters or scheduling policy.
  113. .It Bq Er EINVAL
  114. The value specified by
  115. .Fa attr
  116. is invalid.
  117. .El
  118. .Sh SEE ALSO
  119. .Xr fork 2 ,
  120. .Xr pthread_attr 3 ,
  121. .Xr pthread_cleanup_pop 3 ,
  122. .Xr pthread_cleanup_push 3 ,
  123. .Xr pthread_exit 3 ,
  124. .Xr pthread_join 3
  125. .Sh STANDARDS
  126. The
  127. .Fn pthread_create
  128. function conforms to
  129. .St -p1003.1-96 .