Системное программирование в среде Windows
Шрифт:
Глава 7: Потоки и планирование выполнения
Область | Windows | UNIX/Pthreads | Примечания |
---|---|---|---|
Управление потоками | CreateRemoteThread | – | |
TLS | TlsAlloc | pthread_key_alloc | |
TLS | TlsFree | pthread_key_delete | |
TLS | TlsGetValue | pthread_getspecific | |
TLS | TlsSetValue | pthread_setspecific | |
Управление потоками | CreateThread, _beginthreadex | pthread_create | |
Управление потоками | ExitThread, _endthreadex | pthread_exit | |
Управление потоками | GetCurrentThread | pthread_self | |
Управление потоками | GetCurrentThreadId | – | |
Управление потоками | GetExitCodeThread | pthread_yield | |
Управление потоками | ResumeThread | – | |
Управление потоками | SuspendThread | – | |
Управление потоками | TerminateThread | pthread_cancel | pthread_cancel является более безопасной |
Управление потоками | WaitForSingleObject (в данном случае ожидание дескриптора потока) | pthread_join | |
Приоритет
| GetPriorityClass | pthread_attr_getschedpolicy, getpriority | |
Приоритет потоков | GetThreadPriority | pthread_attr_getschedparam | |
Приоритет потоков | SetPriorityClass | pthread_attr_setschedpolicy, setpriority, nice | |
Приоритет потоков | SetThreadPriority | pthread_attr_setschedparam |
Примечание. Будучи частью всех современных систем UNIX, потоки Pthreads доступны также в системах, отличных от UNIX.
Главы 8-10: синхронизация потоков
Область | Windows | UNIX/Pthreads | Примечания |
---|---|---|---|
Синхронизация: критические разделы | DeleteCriticalSection | Для эмуляции объектов критических разделов используйте мьютексы. | Библиотека С в данном случае не применима |
Синхронизация: критические разделы | EnterCriticalSection | Некоторые системы предоставляют собственные эквиваленты. | Библиотека С в данном случае не применима |
Синхронизация: критические разделы | InitializeCriticalSection | ↓ | |
Синхронизация: критические разделы | LeaveCriticalSection | ||
Синхронизация: события | CloseHandle (в данном случае закрытие дескриптора события) | pthread_cond_destroy | |
Синхронизация: события | CreateEvent | pthread_cond_init | |
Синхронизация: события | PulseEvent | pthread_cond_signal | Вручную сбрасываемое событие |
Синхронизация: события | ResetEvent | – | |
Синхронизация: события | SetEvent | pthread_cond_broadcast | Автоматически сбрасываемое событие |
Синхронизация: события | WaitForSingleObject (в данном случае ожидание дескриптора события) | pthread_cond_wait | |
Синхронизация: события | WaitForSingleObject (в данном случае ожидание дескриптора события) | pthread_timed_wait | |
Синхронизация: мьютексы | CloseHandle (в данном случае закрытие дескриптора мьютекса) | pthread_mutex_destroy | |
Синхронизация: мьютексы | CreateMutex | pthread_mutex_init | |
Синхронизация: мьютексы | ReleaseMutex | pthread_mutex_unlock | |
Синхронизация: мьютексы | WaitForSingleObject(в данном случае ожидание дескриптора мьютекса) | pthread_mutex_lock | |
Синхронизация: семафоры | CreateSemaphore | semget | |
Синхронизация: семафоры | – | semctl | Непосредственная поддержка всех опций в Windows отсутствует |