Что такое пункты отмены POSIX? - PullRequest
18 голосов
/ 12 января 2009

Что такое точки отмены POSIX? Я ищу полный список точек отмены POSIX.

Я спрашиваю, потому что у меня есть книга, в которой написано, что accept() и select() являются точками отмены, но я видел сайты в Интернете, утверждающие, что это не так.

Кроме того, если точки отмены Linux отличаются от точек отмены POSIX, я тоже хочу их список.

Ответы [ 3 ]

20 голосов
/ 12 января 2009

Стандарт POSIX 1003.1-2003 дает список в разделе «Системные интерфейсы», затем «Общая информация», затем «Потоки» ( прямая ссылка любезно предоставлено А. Рексом). ( Добавлено : POSIX 1003.1-2008 теперь доступно в Интернете (все 3872 страницы, в формате PDF и HTML). Вы должны зарегистрироваться (бесплатно). Я получил это из книжного магазина Open Group .)

Точки аннулирования

Точки отмены должны возникать, когда поток выполняет следующие функции:

  • принять ()
  • aio_suspend ()
  • clock_nanosleep ()
  • близко ()
  • подключение ()
  • Creat ()
  • fcntl () (когда аргумент cmd имеет значение F_SETLKW)
  • fdatasync ()
  • FSYNC ()
  • getmsg ()
  • getpmsg ()
  • lockf ()
  • mq_receive ()
  • mq_send ()
  • mq_timedreceive ()
  • mq_timedsend ()
  • msgrcv () * * тысяча пятьдесят-одна
  • msgsnd ()
  • msync ()
  • nanosleep ()
  • открыт ()
  • пауза ()
  • опрос ()
  • pread ()
  • pselect ()
  • pthread_cond_timedwait ()
  • pthread_cond_wait ()
  • pthread_join ()
  • pthread_testcancel ()
  • putmsg ()
  • putpmsg ()
  • pwrite () * 1 081 *
  • чтение ()
  • readv ()
  • RECV ()
  • recvfrom ()
  • recvmsg ()
  • выберите ()
  • sem_timedwait ()
  • sem_wait ()
  • отправить ()
  • sendmsg ()
  • SendTo ()
  • sigpause ()
  • sigsuspend ()
  • sigtimedwait ()
  • sigwait ()
  • sigwaitinfo ()
  • сон ()
  • система ()
  • tcdrain ()
  • USleep ()
  • ожидание ()
  • waidid ()
  • waitpid ()
  • writev ()


Точка отмены также может возникать, когда поток выполняет следующие функции:


  • доступ ()
  • asctime ()
  • asctime_r ()
  • catclose ()
  • catgets ()
  • catopen ()
  • closedir ()
  • closelog ()
  • ctermid ()
  • CTime ()
  • ctime_r ()
  • dbm_close ()
  • dbm_delete ()
  • dbm_fetch ()
  • dbm_nextkey ()
  • dbm_open ()
  • dbm_store ()
  • dlclose ()
  • dlopen ()
  • endgrent ()
  • endhostent ()
  • endnetent ()
  • endprotoent ()
  • endpwent ()
  • endservent ()
  • endutxent ()
  • fclose ()
  • fcntl () (Для любого значения аргумента cmd. [Предположительно, за исключением F_SETLKW, который указан в списке.]
  • fflush ()
  • fgetc ()
  • fgetpos ()
  • fgets ()
  • fgetwc ()
  • fgetws ()
  • fmtmsg ()
  • FOPEN ()
  • fpathconf ()
  • fprintf () * * тысяча двести двадцать одна
  • fputc ()
  • fputs ()
  • fputwc ()
  • fputws ()
  • Fread ()
  • freopen ()
  • fscanf ()
  • FSEEK ()
  • fseeko ()
  • fsetpos ()
  • fstat ()
  • ftell ()
  • ftello ()
  • FTW ()
  • fwprintf ()
  • FWRITE ()
  • fwscanf ()
  • getaddrinfo ()
  • ЕОКП ()
  • getc_unlocked ()
  • GetChar ()
  • getchar_unlocked ()
  • getcwd ()
  • GETDATE ()
  • getgrent ()
  • getgrgid ()
  • getgrgid_r ()
  • getgrnam ()
  • getgrnam_r ()
  • gethostbyaddr ()
  • gethostbyname ()
  • gethostent ()
  • gethostid ()
  • gethostname ()
  • getlogin ()
  • getlogin_r ()
  • getnameinfo ()
  • getnetbyaddr ()
  • getnetbyname ()
  • getnetent ()
  • getopt () (если opterr не равен нулю.)
  • getprotobyname ()
  • getprotobynumber ()
  • getprotoent ()
  • getpwent ()
  • getpwnam ()
  • getpwnam_r ()
  • getpwuid ()
  • getpwuid_r ()
  • получает ()
  • getservbyname ()
  • getservbyport ()
  • getservent ()
  • getutxent ()
  • getutxid ()
  • getutxline ()
  • getwc ()
  • getwchar ()
  • getwd ()
  • Glob ()
  • iconv_close ()
  • iconv_open ()
  • IOCTL ()
  • ссылка () * * тысяча триста пятьдесят-одна
  • LocalTime ()
  • localtime_r ()
  • lseek ()
  • lstat ()
  • mkstemp ()
  • указываете ей ()
  • nftw ()
  • opendir ()
  • openlog ()
  • pathconf ()
  • pclose ()
  • PError ()
  • POPEN ()
  • posix_fadvise ()
  • posix_fallocate ()
  • posix_madvise ()
  • posix_openpt ()
  • posix_spawn ()
  • posix_spawnp ()
  • posix_trace_clear ()
  • posix_trace_close ()
  • posix_trace_create ()
  • posix_trace_create_withlog ()
  • posix_trace_eventtypelist_getne
  • posix_trace_eventtypelist_rewin
  • posix_trace_flush ()
  • posix_trace_get_attr ()
  • posix_trace_get_filter ()
  • posix_trace_get_status ()
  • posix_trace_getnext_event ()
  • posix_trace_open ()
  • posix_trace_rewind ()
  • posix_trace_set_filter ()
  • posix_trace_shutdown ()
  • posix_trace_timedgetnext_event (
  • posix_typed_mem_open ()
  • Е ()
  • pthread_rwlock_rdlock ()
  • pthread_rwlock_timedrdlock ()
  • pthread_rwlock_timedwrlock ()
  • pthread_rwlock_wrlock ()
  • putc ()
  • putc_unlocked ()
  • putchar ()
  • putchar_unlocked ()
  • путы ()
  • pututxline ()
  • putwc ()
  • putwchar ()
  • READDIR ()
  • readdir_r ()
  • удалить ()
  • переименование ()
  • перемотка назад ()
  • rewinddir ()
  • зсапЕ ()
  • seekdir ()
  • semop ()
  • setgrent ()
  • sethostent ()
  • setnetent ()
  • setprotoent ()
  • setpwent ()
  • setservent ()
  • setutxent ()
  • стат ()
  • strerror ()
  • strerror_r ()
  • STRFTIME ()
  • символическая () * * одна тысяча четыреста девяносто-одна * * Синхронизации тысяча четыреста девяносто-двой () * +1493 *
  • системный журнал ()
  • tmpfile ()
  • tmpnam ()
  • ttyname ()
  • ttyname_r ()
  • tzset ()
  • ungetc ()
  • ungetwc ()
  • Unlink ()
  • vfprintf ()
  • vfwprintf ()
  • vprintf ()
  • vwprintf ()
  • wcsftime ()
  • wordexp ()
  • wprintf ()
  • wscanf ()


Реализация не должна вводить точки отмены в любые другие функции, указанные в этом томе стандарта IEEE 1003.1-2001.

Побочные эффекты воздействия на запрос отмены во время приостановки во время вызова функции аналогичны побочным эффектам, которые могут наблюдаться в однопоточной программе, когда вызов функции прерывается сигналом данная функция возвращает [EINTR]. Любые такие побочные эффекты возникают до вызова обработчиков отмены очистки.

Всякий раз, когда потоку разрешена возможность отмены, и был сделан запрос на отмену с этим потоком в качестве цели, и поток затем вызывает любую функцию, которая является точкой отмены (например, pthread_testcancel () или read ()), запрос отмены должно быть выполнено до того, как функция вернется. Если для потока включена возможность отмены и запрос отмены сделан с потоком в качестве цели, в то время как поток приостановлен в точке отмены, поток должен быть разбужен, и запрос отмены должен быть обработан. Однако, если поток приостановлен в точке отмены и событие, для которого он ожидает, происходит до того, как будет обработан запрос отмены, не определено, выполняется ли запрос отмены или запрос отмены остается в ожидании, и поток возобновляет нормальное состояние. выполнение.

Тьфу! Не могу заставить таблицу работать очень хорошо, она выглядела нормально в предварительном просмотре и ничего похожего на таблицу потом. Посмотрите на URL для информации! Есть много возможных точек отмены.

5 голосов
/ 08 октября 2010

См. Справочную страницу pthread_cancel для получения дополнительной и быстрой информации.

3 голосов
/ 12 января 2009

Дополнительная информация: начиная с ядра 2.6, Linux использует библиотеку потоков NPTL, которая совместима с POSIX, поэтому точки отмены должны быть такими же, как указано выше для последних версий Linux.

http://www.ddj.com/linux-open-source/184406204

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...