Обновление: Пожалуйста, взгляните на комментарии - этот ответ не соответствует вашему вопросу, но, возможно, он отвечает на другие вопросы пользователей, которые натолкнулись (я думаю, что из-за upvotes), поэтому я не буду удалять это " answer ":
Сначала: я знаю, что этот вопрос действительно устарел, но я искал именно эту проблему, и эта публикация была опубликована в Google # 1. Поэтому я реализовал версию docs.filter
(принятый ответ), но, как я читал в mongoose v4.6.0 docs , мы теперь можем просто использовать:
Item.find({}).populate({
path: 'tags',
match: { tagName: { $in: ['funny', 'politics'] }}
}).exec((err, items) => {
console.log(items.tags)
// contains only tags where tagName is 'funny' or 'politics'
})
Надеемся, что это поможет будущему пользователей поисковой системы.
Ну, это определенно допустимо в реализации pthreads в Linux, см. раздел примечаний в pthreads_exit. В нем говорится
Чтобы другие потоки могли продолжить выполнение, основной поток должен завершиться. вызвав pthread_exit(), а не exit(3).
Кроме того, просмотр исходного кода здесь (до конца) показывает, что он приблизительно переводится как _endthread или _endthreadex. Документация здесь для тех, кто не упоминает о том, чтобы не вызывать его в начальном потоке.
Это полностью законное и преднамеренное поведение. Весь процесс завершается только тогда, когда завершаются все потоки или exit
вызывается явно или неявно.
Обычный возврат из main
эквивалентен вызову exit
. Если вы завершите main
с помощью pthread_exit
, вы прямо скажете, что хотите, чтобы другие потоки продолжались.