ANNOUNCE 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. PTHREADS-WIN32 RELEASE 2.8.0 (2006-12-22)
  2. -----------------------------------------
  3. Web Site: http://sources.redhat.com/pthreads-win32/
  4. FTP Site: ftp://sources.redhat.com/pub/pthreads-win32
  5. Maintainer: Ross Johnson <rpj@callisto.canberra.edu.au>
  6. We are pleased to announce the availability of a new release of
  7. Pthreads-win32, an Open Source Software implementation of the
  8. Threads component of the POSIX 1003.1 2001 Standard for Microsoft's
  9. Win32 environment. Some functions from other sections of POSIX
  10. 1003.1 2001 are also supported including semaphores and scheduling
  11. functions.
  12. Some common non-portable functions are also implemented for
  13. additional compatibility, as are a few functions specific
  14. to pthreads-win32 for easier integration with Win32 applications.
  15. Pthreads-win32 is free software, distributed under the GNU Lesser
  16. General Public License (LGPL).
  17. Acknowledgements
  18. ----------------
  19. This library is based originally on a Win32 pthreads
  20. implementation contributed by John Bossom <John.Bossom@cognos.com>.
  21. The implementation of Condition Variables uses algorithms developed
  22. by Alexander Terekhov and Louis Thomas.
  23. The implementation of POSIX mutexes has been improved by Thomas Pfaff
  24. and later by Alexander Terekhov.
  25. The implementation of Spinlocks and Barriers was contributed
  26. by Ross Johnson.
  27. The implementation of read/write locks was contributed by
  28. Aurelio Medina and improved by Alexander Terekhov.
  29. Many others have contributed significant time and effort to solve crutial
  30. problems in order to make the library workable, robust and reliable.
  31. Thanks to Xavier Leroy for granting permission to use and modify his
  32. LinuxThreads manual pages.
  33. Thanks to The Open Group for making the Single Unix Specification
  34. publicly available - many of the manual pages included in the package
  35. were extracted from it.
  36. There is also a separate CONTRIBUTORS file. This file and others are
  37. on the web site:
  38. http://sources.redhat.com/pthreads-win32
  39. As much as possible, the ChangeLog file acknowledges contributions to the
  40. code base in more detail.
  41. Changes since the last release
  42. ------------------------------
  43. These are now documented in the NEWS file.
  44. See the ChangeLog file also.
  45. Known Bugs
  46. ----------
  47. These are now documented in the BUGS file.
  48. Level of standards conformance
  49. ------------------------------
  50. The following POSIX 1003.1 2001 options are defined and set to 200112L:
  51. _POSIX_THREADS
  52. _POSIX_THREAD_SAFE_FUNCTIONS
  53. _POSIX_THREAD_ATTR_STACKSIZE
  54. _POSIX_THREAD_PRIORITY_SCHEDULING
  55. _POSIX_SEMAPHORES
  56. _POSIX_READER_WRITER_LOCKS
  57. _POSIX_SPIN_LOCKS
  58. _POSIX_BARRIERS
  59. The following POSIX 1003.1 2001 options are defined and set to -1:
  60. _POSIX_THREAD_ATTR_STACKADDR
  61. _POSIX_THREAD_PRIO_INHERIT
  62. _POSIX_THREAD_PRIO_PROTECT
  63. _POSIX_THREAD_PROCESS_SHARED
  64. The following POSIX 1003.1 2001 limits are defined and set:
  65. _POSIX_THREAD_THREADS_MAX
  66. _POSIX_SEM_VALUE_MAX
  67. _POSIX_SEM_NSEMS_MAX
  68. _POSIX_THREAD_KEYS_MAX
  69. _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  70. PTHREAD_STACK_MIN
  71. PTHREAD_THREADS_MAX
  72. SEM_VALUE_MAX
  73. SEM_NSEMS_MAX
  74. PTHREAD_KEYS_MAX
  75. PTHREAD_DESTRUCTOR_ITERATIONS
  76. The following functions are implemented:
  77. ---------------------------
  78. PThreads
  79. ---------------------------
  80. pthread_attr_init
  81. pthread_attr_destroy
  82. pthread_attr_getdetachstate
  83. pthread_attr_getstackaddr
  84. pthread_attr_getstacksize
  85. pthread_attr_setdetachstate
  86. pthread_attr_setstackaddr
  87. pthread_attr_setstacksize
  88. pthread_create
  89. pthread_detach
  90. pthread_equal
  91. pthread_exit
  92. pthread_join
  93. pthread_once
  94. pthread_self
  95. pthread_cancel
  96. pthread_cleanup_pop
  97. pthread_cleanup_push
  98. pthread_setcancelstate
  99. pthread_setcanceltype
  100. pthread_testcancel
  101. ---------------------------
  102. Thread Specific Data
  103. ---------------------------
  104. pthread_key_create
  105. pthread_key_delete
  106. pthread_setspecific
  107. pthread_getspecific
  108. ---------------------------
  109. Mutexes
  110. ---------------------------
  111. pthread_mutexattr_init
  112. pthread_mutexattr_destroy
  113. pthread_mutexattr_getpshared
  114. pthread_mutexattr_setpshared
  115. pthread_mutexattr_gettype
  116. pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT
  117. PTHREAD_MUTEX_NORMAL
  118. PTHREAD_MUTEX_ERRORCHECK
  119. PTHREAD_MUTEX_RECURSIVE )
  120. pthread_mutex_init
  121. pthread_mutex_destroy
  122. pthread_mutex_lock
  123. pthread_mutex_trylock
  124. pthread_mutex_timedlock
  125. pthread_mutex_unlock
  126. ---------------------------
  127. Condition Variables
  128. ---------------------------
  129. pthread_condattr_init
  130. pthread_condattr_destroy
  131. pthread_condattr_getpshared
  132. pthread_condattr_setpshared
  133. pthread_cond_init
  134. pthread_cond_destroy
  135. pthread_cond_wait
  136. pthread_cond_timedwait
  137. pthread_cond_signal
  138. pthread_cond_broadcast
  139. ---------------------------
  140. Read/Write Locks
  141. ---------------------------
  142. pthread_rwlock_init
  143. pthread_rwlock_destroy
  144. pthread_rwlock_tryrdlock
  145. pthread_rwlock_trywrlock
  146. pthread_rwlock_rdlock
  147. pthread_rwlock_timedrdlock
  148. pthread_rwlock_rwlock
  149. pthread_rwlock_timedwrlock
  150. pthread_rwlock_unlock
  151. pthread_rwlockattr_init
  152. pthread_rwlockattr_destroy
  153. pthread_rwlockattr_getpshared
  154. pthread_rwlockattr_setpshared
  155. ---------------------------
  156. Spin Locks
  157. ---------------------------
  158. pthread_spin_init
  159. pthread_spin_destroy
  160. pthread_spin_lock
  161. pthread_spin_unlock
  162. pthread_spin_trylock
  163. ---------------------------
  164. Barriers
  165. ---------------------------
  166. pthread_barrier_init
  167. pthread_barrier_destroy
  168. pthread_barrier_wait
  169. pthread_barrierattr_init
  170. pthread_barrierattr_destroy
  171. pthread_barrierattr_getpshared
  172. pthread_barrierattr_setpshared
  173. ---------------------------
  174. Semaphores
  175. ---------------------------
  176. sem_init
  177. sem_destroy
  178. sem_post
  179. sem_wait
  180. sem_trywait
  181. sem_timedwait
  182. sem_getvalue (# free if +ve, # of waiters if -ve)
  183. sem_open (returns an error ENOSYS)
  184. sem_close (returns an error ENOSYS)
  185. sem_unlink (returns an error ENOSYS)
  186. ---------------------------
  187. RealTime Scheduling
  188. ---------------------------
  189. pthread_attr_getschedparam
  190. pthread_attr_setschedparam
  191. pthread_attr_getinheritsched
  192. pthread_attr_setinheritsched
  193. pthread_attr_getschedpolicy (only supports SCHED_OTHER)
  194. pthread_attr_setschedpolicy (only supports SCHED_OTHER)
  195. pthread_getschedparam
  196. pthread_setschedparam
  197. pthread_getconcurrency
  198. pthread_setconcurrency
  199. pthread_attr_getscope
  200. pthread_attr_setscope (only supports PTHREAD_SCOPE_SYSTEM)
  201. sched_get_priority_max
  202. sched_get_priority_min
  203. sched_rr_get_interval (returns an error ENOTSUP)
  204. sched_setscheduler (only supports SCHED_OTHER)
  205. sched_getscheduler (only supports SCHED_OTHER)
  206. sched_yield
  207. ---------------------------
  208. Signals
  209. ---------------------------
  210. pthread_sigmask
  211. pthread_kill (only supports zero sig value,
  212. for thread validity checking)
  213. ---------------------------
  214. Non-portable routines (see the README.NONPORTABLE file for usage)
  215. ---------------------------
  216. pthread_getw32threadhandle_np
  217. pthread_timechange_handler_np
  218. pthread_delay_np
  219. pthread_mutexattr_getkind_np
  220. pthread_mutexattr_setkind_np (types: PTHREAD_MUTEX_FAST_NP,
  221. PTHREAD_MUTEX_ERRORCHECK_NP,
  222. PTHREAD_MUTEX_RECURSIVE_NP,
  223. PTHREAD_MUTEX_ADAPTIVE_NP,
  224. PTHREAD_MUTEX_TIMED_NP)
  225. pthread_num_processors_np
  226. pthread_win32_process_attach_np (Required when statically linking
  227. the library)
  228. pthread_win32_process_detach_np (Required when statically linking
  229. the library)
  230. pthread_win32_thread_attach_np (Required when statically linking
  231. the library)
  232. pthread_win32_thread_detach_np (Required when statically linking
  233. the library)
  234. ---------------------------
  235. Static Initializers
  236. ---------------------------
  237. PTHREAD_ONCE_INIT
  238. PTHREAD_MUTEX_INITIALIZER
  239. PTHREAD_RECURSIVE_MUTEX_INITIALIZER
  240. PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
  241. PTHREAD_ERRORCHECK_MUTEX_INITIALIZER
  242. PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
  243. PTHREAD_COND_INITIALIZER
  244. PTHREAD_RWLOCK_INITIALIZER
  245. PTHREAD_SPINLOCK_INITIALIZER
  246. ---------------------------
  247. Thread-Safe C Runtime Library (macros)
  248. ---------------------------
  249. strtok_r
  250. asctime_r
  251. ctime_r
  252. gmtime_r
  253. localtime_r
  254. rand_r
  255. The following functions are not implemented:
  256. ---------------------------
  257. RealTime Scheduling
  258. ---------------------------
  259. pthread_mutex_getprioceiling
  260. pthread_mutex_setprioceiling
  261. pthread_mutex_attr_getprioceiling
  262. pthread_mutex_attr_getprotocol
  263. pthread_mutex_attr_setprioceiling
  264. pthread_mutex_attr_setprotocol
  265. ---------------------------
  266. Fork Handlers
  267. ---------------------------
  268. pthread_atfork
  269. ---------------------------
  270. Stdio
  271. ---------------------------
  272. flockfile
  273. ftrylockfile
  274. funlockfile
  275. getc_unlocked
  276. getchar_unlocked
  277. putc_unlocked
  278. putchar_unlocked
  279. ---------------------------
  280. Thread-Safe C Runtime Library
  281. ---------------------------
  282. readdir_r
  283. getgrgid_r
  284. getgrnam_r
  285. getpwuid_r
  286. getpwnam_r
  287. ---------------------------
  288. Signals
  289. ---------------------------
  290. sigtimedwait
  291. sigwait
  292. sigwaitinfo
  293. ---------------------------
  294. General
  295. ---------------------------
  296. sysconf
  297. The library includes two non-API functions for creating cancellation
  298. points in applications and libraries:
  299. pthreadCancelableWait
  300. pthreadCancelableTimedWait
  301. Availability
  302. ------------
  303. The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header
  304. files (pthread.h, semaphore.h, sched.h) are available along with the
  305. complete source code.
  306. The source code can be found at:
  307. ftp://sources.redhat.com/pub/pthreads-win32
  308. and as individual source code files at
  309. ftp://sources.redhat.com/pub/pthreads-win32/source
  310. The pre-built DLL, export libraries and include files can be found at:
  311. ftp://sources.redhat.com/pub/pthreads-win32/dll-latest
  312. Mailing List
  313. ------------
  314. There is a mailing list for discussing pthreads on Win32. To join,
  315. send email to:
  316. pthreads-win32-subscribe@sourceware.cygnus.com
  317. Application Development Environments
  318. ------------------------------------
  319. See the README file for more information.
  320. MSVC:
  321. MSVC using SEH works. Distribute pthreadVSE.dll with your application.
  322. MSVC using C++ EH works. Distribute pthreadVCE.dll with your application.
  323. MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application.
  324. Mingw32:
  325. See the FAQ, Questions 6 and 10.
  326. Mingw using C++ EH works. Distribute pthreadGCE.dll with your application.
  327. Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application.
  328. Cygwin: (http://sourceware.cygnus.com/cygwin/)
  329. Developers using Cygwin will not need pthreads-win32 since it has POSIX threads
  330. support. Refer to its documentation for details and extent.
  331. UWIN:
  332. UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32
  333. doesn't currently support UWIN (and vice versa), but that may change in the
  334. future.
  335. Generally:
  336. For convenience, the following pre-built files are available on the FTP site
  337. (see Availability above):
  338. pthread.h - for POSIX 1c threads
  339. semaphore.h - for POSIX 1b semaphores
  340. sched.h - for POSIX 1b scheduling
  341. pthreadVCE.dll - built with MSVC++ compiler using C++ EH
  342. pthreadVCE.lib
  343. pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp
  344. pthreadVC.lib
  345. pthreadVSE.dll - built with MSVC compiler using SEH
  346. pthreadVSE.lib
  347. pthreadGCE.dll - built with Mingw32 G++ 2.95.2-1
  348. pthreadGC.dll - built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp
  349. libpthreadGCE.a - derived from pthreadGCE.dll
  350. libpthreadGC.a - derived from pthreadGC.dll
  351. gcc.dll - needed if distributing applications that use
  352. pthreadGCE.dll (but see the FAQ Q 10 for the latest
  353. related information)
  354. These are the only files you need in order to build POSIX threads
  355. applications for Win32 using either MSVC or Mingw32.
  356. See the FAQ file in the source tree for additional information.
  357. Documentation
  358. -------------
  359. For the authoritative reference, see the online POSIX
  360. standard reference at:
  361. http://www.OpenGroup.org
  362. For POSIX Thread API programming, several reference books are
  363. available:
  364. Programming with POSIX Threads
  365. David R. Butenhof
  366. Addison-Wesley (pub)
  367. Pthreads Programming
  368. By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell
  369. O'Reilly (pub)
  370. On the web: see the links at the bottom of the pthreads-win32 site:
  371. http://sources.redhat.com/pthreads-win32/
  372. Currently, there is no documentation included in the package apart
  373. from the copious comments in the source code.
  374. Enjoy!
  375. Ross Johnson