Системное программирование в среде 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 отсутствует |
| Синхронизация: семафоры | OpenSemaphore | semget | |
| Синхронизация: семафоры | ReleaseSemaphore | semop (+) | |
| Синхронизация: семафоры | WaitForSingleObject (в данном случае закрытие дескриптора семафора) | semop (-) | Windows может выполнять ожидание только одного счетчика |
Глава 11: Взаимодействие между процессами
| Область | Windows | UNIX | Библиотека С | Примечания |
|---|---|---|---|---|
| IPC | CallNamedPipe | – | – | CreateFile, WriteFile, ReadFile, CloseHandle |
| IPC | CloseHandle (pipe handle) | close, msgctl | pclose | |
| IPC | ConnectNamedPipe | – | – | |
| IPC | CreateMailslot | – | – | |
| IPC | CreateNamedPipe | mkfifo, msgget | – | |
| IPC | CreatePipe | pipe | popen | He является частью стандартной библиотеки С — см. [40] |
| IPC | DuplicateHandle | dup, dup2, or fcntl | – | Или используйте стандартные имена файлов CONIN$, CONOUT$ |
| IPC | GetNamedPipeHandleState | stat, fstat, lstat64 | – | |
| IPC | GetNamedPipeInfo | stat, fstat, lstat | – | |
| IPC | ImpersonateNamedPipeClient | – | – | |
| IPC | PeekNamedPipe | – | – | |
| IPC | ReadFile (в данном случае используется дескриптор именованного канала) | read (fifo), msgsnd | – |