Это бессмысленно (и отвлекающий), но находится в относительно интенсивном употреблении в моей компании, по крайней мере, для типов как ints, строки, булевские переменные, и удваивается.
Вещи как sValue
, iCount
, dAmount
или fAmount
, и bFlag
везде.
Когда-то давно было серьезное основание для этого соглашения. Теперь, это - рак.
Pread () работает так же, как read () , но читает из указанной позиции в файле без изменения указателя файла.
Вы могли бы использовать его, когда вам нужно многократно читать данные с фиксированным смещением, например индекс базы данных, который указывает на отдельные записи в файле, чтобы сэкономить на вызовах seek () .
Обычно используют read () , если ваши данные являются последовательными, или pread () , если вы знаете, или можете вычислить смещение для чтения.
Из этой ссылки ,
Атомарность pread позволяет процессы или потоки, которые совместно используют файл дескрипторы для чтения из общего файла по определенному смещению без использования запирающий механизм, который будет необходимо для достижения того же результата в отдельной системе lseek и read звонки. Атомарность требуется, поскольку указатель файла является общим и один поток может переместить указатель с помощью lseek после того, как другой процесс завершит lseek, но до чтения.
Google дал мне man pread
.
Если вы прочитаете ()
дважды, вы получите два разных результата, которые показывают, что read ()
продвигается по файлу.
Если вы pread (
) дважды, вы получите тот же результат, который показывает, что pread ()
остается в той же точке в файле.
read () начинает чтение запрошенного количества байтов с текущего смещения файла, тогда как с помощью pread () вы можете указать смещение. Это полезно в ситуациях, когда один набор функций читает файл последовательно, используя указатель файла, в то время как другой набор одновременно обращается к определенным данным.