Open Source
POSIX Threads for Win32



Level of standards conformance


		

The following POSIX 1003.1 2001 options are defined and set to 200112L:


_POSIX_THREADS

_POSIX_THREAD_SAFE_FUNCTIONS

_POSIX_THREAD_ATTR_STACKSIZE

_POSIX_THREAD_PRIORITY_SCHEDULING

_POSIX_SEMAPHORES

_POSIX_READER_WRITER_LOCKS

_POSIX_SPIN_LOCKS

_POSIX_BARRIERS



The following POSIX 1003.1 2001 options are defined and set to -1:


_POSIX_THREAD_ATTR_STACKADDR

_POSIX_THREAD_PRIO_INHERIT

_POSIX_THREAD_PRIO_PROTECT

_POSIX_THREAD_PROCESS_SHARED



The following POSIX 1003.1 2001 limits are defined and set:


_POSIX_THREAD_THREADS_MAX

_POSIX_SEM_VALUE_MAX

_POSIX_SEM_NSEMS_MAX

_POSIX_THREAD_KEYS_MAX

_POSIX_THREAD_DESTRUCTOR_ITERATIONS

PTHREAD_STACK_MIN

PTHREAD_THREADS_MAX

SEM_VALUE_MAX

SEM_NSEMS_MAX

PTHREAD_KEYS_MAX

PTHREAD_DESTRUCTOR_ITERATIONS



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_mutexattr_getrobust

pthread_mutexattr_setrobust (values: PTHREAD_MUTEX_STALLED

PTHREAD_MUTEX_ROBUST)

pthread_mutex_init

pthread_mutex_destroy

pthread_mutex_lock

pthread_mutex_trylock

pthread_mutex_timedlock

pthread_mutex_unlock

pthread_mutex_consistent


---------------------------

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_getvalue (# free if +ve, # of waiters if -ve)

sem_open (returns an error ENOSYS)

sem_close (returns an error ENOSYS)

sem_unlink (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_getunique_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

(The following four routines may be required when linking statically.

The process_* routines should not be needed for MSVC or GCC.)

pthread_win32_process_attach_np

pthread_win32_process_detach_np

(The following routines should only be needed to manage implicit

POSIX handles i.e. when Win native threads call POSIX thread routines

(other than pthread_create))

pthread_win32_thread_attach_np

pthread_win32_thread_detach_np


---------------------------

Static Initializers

---------------------------

PTHREAD_ONCE_INIT

PTHREAD_MUTEX_INITIALIZER

PTHREAD_RECURSIVE_MUTEX_INITIALIZER

PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP

PTHREAD_ERRORCHECK_MUTEX_INITIALIZER

PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP

PTHREAD_COND_INITIALIZER

PTHREAD_RWLOCK_INITIALIZER

PTHREAD_SPINLOCK_INITIALIZER



The library includes two non-API functions for creating cancellation

points in applications and libraries:

pthreadCancelableWait

pthreadCancelableTimedWait


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


---------------------------

General

---------------------------

sysconf


---------------------------

Thread-Safe C Runtime Library (macros)

---------------------------

strtok_r

asctime_r

ctime_r

gmtime_r

localtime_r

rand_r



Maintained by Ross Johnson