Харт Джонсон М.
Шрифт:
Примечание. Будучи частью всех современных систем 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 | – | |
| IPC | RevertToSelf | – | – | |
| IPC | SetNamedPipeHandleState | – | – | |
| IPC | TransactNamedPipe | – | – | WriteFile; ReadFile |
| IPC | WriteFile (в данном случае используется дескриптор именованного канала) | write (fifo), msgrcv | – | |
| Разное | GetComputerName | uname | – |