summaryrefslogtreecommitdiff
path: root/ANNOUNCE
blob: 1fc61ef2d0e41550f10204c6207bd44362a6c62c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
		 PTHREADS-WIN32 SNAPSHOT 2003-08-19
		 ----------------------------------
	 Web Site: http://sources.redhat.com/pthreads-win32/
	FTP Site: ftp://sources.redhat.com/pub/pthreads-win32
	 Maintainer: Ross Johnson <rpj@ise.canberra.edu.au>


We are pleased to announce the availability of a new snapshot of
Pthreads-win32, an Open Source Software implementation of the
Threads component of the POSIX 1003.1 2001 Standard for Microsoft's
Win32 environment. Some functions from other sections of POSIX
1003.1 2001 are also supported including semaphores and scheduling
functions.

Some common non-portable functions are also implemented for
additional compatibility, as are a few functions specific
to pthreads-win32 for easier integration with Win32 applications.

Pthreads-win32 is free software, distributed under the GNU Lesser
General Public License (LGPL).


Acknowledgements
----------------
This library is based substantially on a Win32 pthreads
implementation contributed by John Bossom <John.Bossom@cognos.com>.

The implementation of Condition Variables uses algorithms developed
by Alexander Terekhov and Louis Thomas.

The implementation of POSIX mutexes has been improved by Thomas Pfaff.

The implementation of Spinlocks and Barriers was contributed
by Ross Johnson.

The implementation of read/write locks was contributed by
Aurelio Medina and improved by Alexander Terekhov.

Many others have contributed significant time and effort to solve crutial
problems in order to make the library workable, robust and reliable.

There is also a separate CONTRIBUTORS file. This file and others are
on the web site:

	http://sources.redhat.com/pthreads-win32

As much as possible, the ChangeLog file acknowledges contributions to the
code base in more detail.


Changes since the last snapshot
-------------------------------
These are now documented in the NEWS file.
See the ChangeLog file also.


Known Bugs
----------
These are now documented in the BUGS file.


Level of standards conformance
------------------------------

The following POSIX 1003.1 2001 options are defined:

      _POSIX_THREADS
      _POSIX_THREAD_SAFE_FUNCTIONS
      _POSIX_THREAD_ATTR_STACKSIZE
      _POSIX_SEM_VALUE_MAX
      _POSIX_SEM_NSEMS_MAX
      _POSIX_THREAD_PRIORITY_SCHEDULING
      _POSIX_SEMAPHORES
      _POSIX_READER_WRITER_LOCKS
      _POSIX_SPIN_LOCKS
      _POSIX_BARRIERS


The following POSIX 1003.1 2001 options are not defined:

      _POSIX_THREAD_ATTR_STACKADDR
      _POSIX_THREAD_PRIO_INHERIT
      _POSIX_THREAD_PRIO_PROTECT
      _POSIX_THREAD_PROCESS_SHARED


The following functions are implemented:

      ---------------------------
      PThreads
      ---------------------------
      pthread_attr_init
      pthread_attr_destroy
      pthread_attr_getdetachstate
      pthread_attr_getstackaddr
      pthread_attr_getstacksize
      pthread_attr_setdetachstate
      pthread_attr_setstackaddr
      pthread_attr_setstacksize

      pthread_create
      pthread_detach
      pthread_equal
      pthread_exit
      pthread_join
      pthread_once
      pthread_self

      pthread_cancel
      pthread_cleanup_pop
      pthread_cleanup_push
      pthread_setcancelstate
      pthread_setcanceltype
      pthread_testcancel

      ---------------------------
      Thread Specific Data
      ---------------------------
      pthread_key_create
      pthread_key_delete
      pthread_setspecific
      pthread_getspecific

      ---------------------------
      Mutexes
      ---------------------------
      pthread_mutexattr_init
      pthread_mutexattr_destroy
      pthread_mutexattr_getpshared
      pthread_mutexattr_setpshared
      pthread_mutexattr_gettype
      pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT
					PTHREAD_MUTEX_NORMAL
					PTHREAD_MUTEX_ERRORCHECK
					PTHREAD_MUTEX_RECURSIVE  )
      pthread_mutex_init
      pthread_mutex_destroy
      pthread_mutex_lock
      pthread_mutex_trylock
      pthread_mutex_timedlock
      pthread_mutex_unlock

      ---------------------------
      Condition Variables
      ---------------------------
      pthread_condattr_init
      pthread_condattr_destroy
      pthread_condattr_getpshared
      pthread_condattr_setpshared

      pthread_cond_init
      pthread_cond_destroy
      pthread_cond_wait
      pthread_cond_timedwait
      pthread_cond_signal
      pthread_cond_broadcast

      ---------------------------
      Read/Write Locks
      ---------------------------
      pthread_rwlock_init
      pthread_rwlock_destroy
      pthread_rwlock_tryrdlock
      pthread_rwlock_trywrlock
      pthread_rwlock_rdlock
      pthread_rwlock_timedrdlock
      pthread_rwlock_rwlock
      pthread_rwlock_timedwrlock
      pthread_rwlock_unlock
      pthread_rwlockattr_init
      pthread_rwlockattr_destroy
      pthread_rwlockattr_getpshared
      pthread_rwlockattr_setpshared

      ---------------------------
      Spin Locks
      ---------------------------
      pthread_spin_init
      pthread_spin_destroy
      pthread_spin_lock
      pthread_spin_unlock
      pthread_spin_trylock

      ---------------------------
      Barriers
      ---------------------------
      pthread_barrier_init
      pthread_barrier_destroy
      pthread_barrier_wait
      pthread_barrierattr_init
      pthread_barrierattr_destroy
      pthread_barrierattr_getpshared
      pthread_barrierattr_setpshared

      ---------------------------
      Semaphores
      ---------------------------
      sem_init
      sem_destroy
      sem_post
      sem_wait
      sem_trywait
      sem_timedwait
      sem_open		     (returns an error ENOSYS)
      sem_close 	     (returns an error ENOSYS)
      sem_unlink	     (returns an error ENOSYS)
      sem_getvalue	     (returns an error ENOSYS)

      ---------------------------
      RealTime Scheduling
      ---------------------------
      pthread_attr_getschedparam
      pthread_attr_setschedparam
      pthread_attr_getinheritsched
      pthread_attr_setinheritsched
      pthread_attr_getschedpolicy (only supports SCHED_OTHER)
      pthread_attr_setschedpolicy (only supports SCHED_OTHER)
      pthread_getschedparam
      pthread_setschedparam
      pthread_getconcurrency
      pthread_setconcurrency
      pthread_attr_getscope
      pthread_attr_setscope  (only supports PTHREAD_SCOPE_SYSTEM)
      sched_get_priority_max
      sched_get_priority_min
      sched_rr_get_interval  (returns an error ENOTSUP)
      sched_setscheduler     (only supports SCHED_OTHER)
      sched_getscheduler     (only supports SCHED_OTHER)
      sched_yield

      ---------------------------
      Signals
      ---------------------------
      pthread_sigmask
      pthread_kill           (only supports zero sig value,
                              for thread validity checking)

      ---------------------------
      Non-portable routines (see the README.NONPORTABLE file for usage)
      ---------------------------
      pthread_getw32threadhandle_np
      pthread_timechange_handler_np
      pthread_delay_np
      pthread_mutexattr_getkind_np
      pthread_mutexattr_setkind_np	(types: PTHREAD_MUTEX_FAST_NP,
						PTHREAD_MUTEX_ERRORCHECK_NP,
						PTHREAD_MUTEX_RECURSIVE_NP,
						PTHREAD_MUTEX_ADAPTIVE_NP,
						PTHREAD_MUTEX_TIMED_NP)
      pthread_num_processors_np
      pthread_win32_process_attach_np	(Required when statically linking the library)
      pthread_win32_process_detach_np	(Required when statically linking the library)
      pthread_win32_thread_attach_np	(Required when statically linking the library)
      pthread_win32_thread_detach_np	(Required when statically linking the library)

      ---------------------------
      Static Initializers
      ---------------------------
      PTHREAD_ONCE_INIT
      PTHREAD_MUTEX_INITIALIZER
      PTHREAD_COND_INITIALIZER
      PTHREAD_RWLOCK_INITIALIZER
      PTHREAD_SPINLOCK_INITIALIZER

      ---------------------------
      Thread-Safe C Runtime Library (macros)
      ---------------------------
      strtok_r
      asctime_r
      ctime_r
      gmtime_r
      localtime_r
      rand_r


The following functions are not implemented:
      
      ---------------------------
      RealTime Scheduling
      ---------------------------
      pthread_mutex_getprioceiling
      pthread_mutex_setprioceiling
      pthread_mutex_attr_getprioceiling
      pthread_mutex_attr_getprotocol
      pthread_mutex_attr_setprioceiling
      pthread_mutex_attr_setprotocol

      ---------------------------
      Fork Handlers
      ---------------------------
      pthread_atfork

      ---------------------------
      Stdio
      --------------------------- 
      flockfile
      ftrylockfile
      funlockfile
      getc_unlocked
      getchar_unlocked	
      putc_unlocked
      putchar_unlocked

      ---------------------------
      Thread-Safe C Runtime Library
      ---------------------------
      readdir_r
      getgrgid_r
      getgrnam_r
      getpwuid_r
      getpwnam_r
      
      ---------------------------
      Signals
      ---------------------------
      sigtimedwait
      sigwait
      sigwaitinfo
      
      
The library includes two non-API functions for creating cancellation
points in applications and libraries:
      
      pthreadCancelableWait
      pthreadCancelableTimedWait

      
Availability
------------ 

The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header
files (pthread.h, semaphore.h, sched.h) are available along with the
complete source code.

The source code can be found at:

	ftp://sources.redhat.com/pub/pthreads-win32

and as individual source code files at

	ftp://sources.redhat.com/pub/pthreads-win32/source

The pre-built DLL, export libraries and include files can be found at:

	ftp://sources.redhat.com/pub/pthreads-win32/dll-latest


      
Mailing List 
------------  
      
There is a mailing list for discussing pthreads on Win32. To join,
send email to:

	pthreads-win32-subscribe@sourceware.cygnus.com
      

Application Development Environments
------------------------------------

See the README file for more information.
      
MSVC:
MSVC using SEH works. Distribute pthreadVSE.dll with your application.
MSVC using C++ EH works. Distribute pthreadVCE.dll with your application.
MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application.


Mingw32:
See the FAQ, Questions 6 and 10.

Mingw using C++ EH works. Distribute pthreadGCE.dll with your application.
Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application.


Cygwin: (http://sourceware.cygnus.com/cygwin/)
Developers using Cygwin will not need pthreads-win32 since it has POSIX threads
support. Refer to its documentation for details and extent.


UWIN:
UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32
doesn't currently support UWIN (and vice versa), but that may change in the
future.

Generally:
For convenience, the following pre-built files are available on the FTP site
(see Availability above):

	pthread.h	- for POSIX 1c threads
	semaphore.h	- for POSIX 1b semaphores
	sched.h 	- for POSIX 1b scheduling
	pthreadVCE.dll	- built with MSVC++ compiler using C++ EH
	pthreadVCE.lib
	pthreadVC.dll	- built with MSVC compiler using C setjmp/longjmp
	pthreadVC.lib
	pthreadVSE.dll	- built with MSVC compiler using SEH
	pthreadVSE.lib
	pthreadGCE.dll	- built with Mingw32 G++ 2.95.2-1
	pthreadGC.dll	- built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp
	libpthreadGCE.a - derived from pthreadGCE.dll
	libpthreadGC.a	- derived from pthreadGC.dll
	gcc.dll 	- needed if distributing applications that use
			  pthreadGCE.dll (but see the FAQ Q 10 for the latest
			  related information)

These are the only files you need in order to build POSIX threads
applications for Win32 using either MSVC or Mingw32.

See the FAQ file in the source tree for additional information.


Documentation
-------------

For the authoritative reference, see the online POSIX
standard reference:

       http://www.UNIX-systems.org/version3/ieee_std.html

For POSIX Thread API programming, several reference books are
available:

       Programming with POSIX Threads
       David R. Butenhof
       Addison-Wesley (pub)

       Pthreads Programming
       By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell
       O'Reilly (pub)

On the web: see the links at the bottom of the pthreads-win32 site:

       http://sources.redhat.com/pthreads-win32/

       Currently, there is no documentation included in the package apart
       from the copious comments in the source code.



Enjoy!

Ross Johnson