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