Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «БистСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² срСдС WindowsΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 133

Автор ДТонсон Π₯Π°Ρ€Ρ‚

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Ρ‡Π°ΡΡ‚ΡŒΡŽ всСх соврСмСнных систСм 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 - Π Π°Π·Π½ΠΎΠ΅ SetComputerName - - Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ SetNamedPipeIdentity Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±ΠΈΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° - Π“Π»Π°Π²Π° 14: асинхронный Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ ΠžΠ±Π»Π°ΡΡ‚ΡŒ Windows UNIX Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π‘ ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ Асинхронный Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ GetOverlappedResult - - Асинхронный Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ ReadFileEx - - Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄/ Π²Ρ‹Π²ΠΎΠ΄ с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Асинхронный Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ SleepEx - - ОТиданиС Π² Π΄Π΅ΠΆΡƒΡ€Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Асинхронный Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ WaitForMultipleObjects (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ дСскрипторов Ρ„Π°ΠΉΠ»ΠΎΠ²) poll, select - Асинхронный Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ WaitForMultipleObjectsEx - - ОТиданиС Π² Π΄Π΅ΠΆΡƒΡ€Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Асинхронный Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ WriteFileEx - - Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄/ Π²Ρ‹Π²ΠΎΠ΄ с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Асинхронный Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ WaitForSingleObjectEx waitpid - ОТиданиС Π² Π΄Π΅ΠΆΡƒΡ€Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π“Π»Π°Π²Π° 15: Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Windows ΠžΠ±Π»Π°ΡΡ‚ΡŒ Windows UNIX ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ AddAccessAllowedAce chmod, fchmod БрСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π‘ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ AddAccessDeniedAce chmod, fchmod Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ AddAuditAce - Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ CreatePrivateObjectSecurity - Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ DeleteAce chmod, fchmod ↓ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ DestroyPrivateObjectSecurity - Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ GetAce stat*, fstat*, lstat Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ GetAclInformation stat*, fstat*, lstat Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ GetFileSecurity stat*, fstat*, lstat Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ GetPrivateObjectSecurity - Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ GetSecurityDescriptorDacl stat*, fstat*, lstat Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ GetUserName getlogin Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ InitializeAcl - Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ InitializeSecurityDescriptor umask Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ LookupAccountName getpwnam, getgrnam Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ LookupAccountSid getpwuid, getuid, geteuid Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ - getpwend, setpwent, endpwent Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ - getgrent, setgrent, endgrent Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ - setuid, seteuid, setreuid Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ - setgid, setegid, setregid Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ OpenProcessToken getgroups, setgroups, initgroups Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ SetFileSecurity chmod*, fchmod Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ SetPrivateObjectSecurity - Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ SetSecurityDescriptorDacl umask Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ SetSecurityDescriptorGroup chown, fchown, lchown Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ SetSecurityDescriptorOwner chown, fchown, lchown Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ SetSecurityDescriptorSacl -

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• Π’