原文出处:http://blog.youkuaiyun.com/zhengdy/article/details/5485472
Windows 和 Linux 的IPC API对应表
Windows | Linux | Classification |
---|---|---|
CreateProcess() CreateProcessAsUser() | fork() setuid() exec() | Mappable |
TerminateProcess() | kill() | Mappable |
SetThreadpriority() GetThreadPriority() | Setpriority() GetPriority() | Mappable |
GetCurrentProcessID() | getpid() | Mappable |
Exitprocess() | exit() | Mappable |
WaitForSingleObjec() WaitForMultipleObject() GetExitCodeProcess() | waitpid() ※Using Sys V semaphores, WaitForSingleObjec/MultipleObject can be implemented | Context specific |
GetEnvironmentVariable() SetEnvironmentVariable() | getenv() setenv() | Mappable |
Windows | Linux | Classification |
---|---|---|
CreateThread() | pthread_create pthread_attr_init pthread_attr_setstacksize pthread_attr_destroy | Mappable |
ThreadExit() | pthread_exit | Mappable |
WaitForSingleObject() | pthread_join pthread_attr_setdetachstate pthread_detach | Mappable |
SetPriorityClass() SetThreadPriority() | setpriority sched_setscheduler sched_setparam pthread_setschedparam pthread_setschedpolicy pthread_attr_setschedparam pthread_attr_setschedpolicy> | Context Specific |
Windows | Linux -- threads | Linux -- process |
---|---|---|
Mutex | Mutex - pthread library | System V semaphores |
Critical section | Mutex - pthread library | Not applicable as critical sections are used only between the threads of the same process |
Semaphore | Conditional Variable with mutex - pthreads POSIX semaphores | System V Semaphores |
Event | Conditional Variable with mutex - pthreads | System V Semaphores |
Windows | Linux -- threads | Linux -- process | Classification |
---|---|---|---|
CreateSemaphore | sem_init | semget semctl | Context specific |
OpenSemaphore | Not applicable | semget | Context specific |
WaitForSingleObject | sem_wait sem_trywait | semop | Context specific |
ReleaseSemaphore | sem_post | semop | Context specific |
CloseHandle | sem_destroy | semctl | Context specific |
Windows | Linux -- threads | Linux -- process | Classification |
---|---|---|---|
CreateEvent OpenEvent | pthread_cond_init sem_init | semget semctl | Context specific |
SetEvent | pthread_cond_signal sem_post | semop | Context specific |
ResetEvent | N/A | N/A | Context specific |
WaitForSingleObject | pthread_cond_wait pthread_cond_timedwait sem_wait sem_trywait | semop | Context specific |
CloseHandle | pthread_cond_destroy sem_destroy | semctl | Context specific |
Windows | Linux -- threads | Linux -- process | Classification |
---|---|---|---|
CreateMutex | pthreads_mutex_init | semget semctl | Context specific |
OpenMutex | Not applicable | semget | Context specific |
WaitForSingleObject | pthread_mutex_lock pthread_mutex_trylock | semop | Context specific |
ReleaseMutex | pthread_mutex_unlock | semop | Context specific |
CloseHandle | pthread_mutex_destroy | semctl | Context specific |
Windows | Linux | Classification |
---|---|---|
InitializeCriticalSection InitializeCriticalSectionAndSpinCount | pthreads_mutex_init | Mappable |
EnterCriticalSection TryEnterCriticalSection | pthread_mutex_lock pthread_mutex_trylock | Mappable |
LeaveCriticalSection | pthread_mutex_unlock | Mappable |
DeleteCriticalSection | pthread_mutex_destroy | Mappable |
Windows | Linux -- threads | Linux -- process | Classification |
---|---|---|---|
SignalObjectAndWait | semop | semop | Context specific |
WaitForMultipleObjects | sem_wait sem_trywait | semop | Context specific |