Системное программирование в среде 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 | – |