Являются ли fts_read и fts_children не потокобезопасными?

Этот ответ рекомендует fts как хороший способ повторного обхода файловой системы. Однако, читая справочные страницы, я заметил, что fts_read и fts_children отмечены как MT-Unsafe.

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

Если это так, я думаю, что передачи FTS_NOCHDIR будет достаточно для обеспечения безопасности потоков. Есть ли какая-то другая причина, которую я не вижу?

(И для протокола, я очень удивлен, что мы пришли к этому дню без хорошего реентерабельного, разумного в использовании способа сканирования через дерево файловой системы! Серьезно? ☺)


person Dacav    schedule 24.11.2018    source источник
comment
Что касается того, как мы пришли к этому дню, не имея реентерабельного способа сканирования файловой системы: это по определению задача, связанная с вводом-выводом, поэтому, вероятно, не будет большой выгоды от ее параллельного выполнения. Все ваши потоки в любом случае просто будут ждать одного и того же физического носителя, так зачем беспокоиться?   -  person Britton Kerin    schedule 25.11.2018
comment
@BrittonKerin - в однопоточной программе также есть сигналы и другие источники прерывания. Кроме того, реентерабельный код способствует лучшему качеству в целом, даже за пределами многопоточного программирования. Качество имеет значение :)   -  person Dacav    schedule 26.11.2018