Каковы различия между опросом и выбором?

Я получил эту ошибку при редактировании моего файла Product.orm.yml.

Я добавил новое отношение manyToMany с сущностью Category и допустил ошибку в строке joinTable:

manyToMany:
  categories:
    targetEntity: Acme\ProductBundle\Entity\Category
    inversedBy: products
    joinTable:
      name: Product  # My mistake: joinTable should be something like ProductCategory

    [...]

Действительно, это глупая ошибка, которой я все равно поделюсь.

154
задан Steven Lu 13 May 2014 в 22:00
поделиться

1 ответ

Я думаю, что этот отвечает на ваш вопрос:

От Ричарда Стивенса ( rstevens@noao.edu ):

Основное отличие в том, что select () ' s fd_set - это битовая маска и поэтому имеет фиксированный размер. Ядро могло бы не ограничивать этот размер при компиляции ядра, позволяя приложение для определения FD_SETSIZE по своему усмотрению (как комментарии в шапке системы подразумеваю сегодня) но требует больше работы. 4.4BSD И ядро, и функция библиотеки Solaris имеют это ограничение. Но я видите, что BSD / OS 2.1 теперь закодирована так, чтобы избежать этого ограничения, поэтому выполнимо, всего лишь небольшой вопрос программирования. :-) Кто-то должен подать Сообщите об этой ошибке в Solaris и посмотрите, будет ли она когда-либо исправлена.

Однако с помощью poll () пользователь должен выделить массив pollfd структур и передайте количество записей в этом массиве, поэтому нет фундаментального ограничения. Как отмечает Каспер, меньше систем имеют poll (), чем select, поэтому последний более переносимый. Также с оригинальным реализации (SVR3) вы не могли установить дескриптор на -1, чтобы сообщить ядро игнорирует запись в структуре pollfd, которая сделала его сложно удалить записи из массива; SVR4 обходит это. Лично я всегда использую select () и редко poll (), потому что портирую свой код и для среды BSD. Кто-то может написать реализацию poll (), который использует select () для этих сред, но я никогда видел один. И select (), и poll () стандартизированы POSIX. 1003.1g.

Обновление за октябрь 2017 г .:

Адрес электронной почты, упомянутый выше, как минимум такой же, как 2001; команда poll () теперь (2017 г.) поддерживается во всех современных операционных системах, включая BSD. Фактически, некоторые люди считают, что select () не рекомендуется использовать . Помимо мнений, проблемы переносимости poll () больше не являются проблемой для современных систем. Кроме того, с тех пор был разработан epoll () (вы можете прочитать страницу руководства ), и его популярность продолжает расти.

Для современной разработки вы, вероятно, не захотите используйте select () , хотя в этом нет ничего явного неправильного. poll () , и это более современная эволюция epoll () ,

81
ответ дан 23 November 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: