Когда я перекомпилировал файловую систему FUSE на новой рабочей станции, я заметил предупреждения об устаревании в отношении readdir_r
. Поскольку readdir
не является безопасным для MT и требует собственной синхронизации, я немного озадачен.
Я не уверен, что именно не является MT Safe - это readdir
отдельно или это весь процесс чтения определенный каталог до конца? Кажется, что стандарт пытается оправдать это решение, указывая, что readdir
является MT Safe, если он вызывается в разных каталогах, но это явно небезопасное предположение, если ваша «программа» представляет собой многопользовательскую файловую систему FUSE с наложением. Итак, следует ли поместить всю процедуру чтения каталога в критическую секцию или только отдельные readdir
вызовы?
Оба случая, если честно, звучат для меня довольно плохо с точки зрения производительности - справедливы ли мои опасения или есть другие узкие места в Linux ядро, которое в любом случае делает невозможным параллельное чтение одного каталога более чем одним процессом / потоком?