Рубрики

getchar_unlocked () — более быстрый ввод в C / C ++ для конкурентного программирования

getchar_unlocked () похож на getchar () за исключением того, что он не является потокобезопасным. Ниже приведен пример кода.

// Простая программа на C для демонстрации
// работа getchar_unlocked ()
#include <stdio.h>

int main()

{

    // Синтаксис такой же, как getchar ()

    char c = getchar_unlocked();

  

    printf("Entered character is %c", c);

  

    return 0;

}

Input: g
Output: Entered character is g 

Ниже приведены некоторые важные моменты:

  1. Поскольку он не является поточно-ориентированным, все издержки взаимного исключения исключаются, и это быстрее, чем getchar ().
  2. Это может быть особенно полезно для задач конкурентного программирования с « Предупреждение: большие данные ввода / вывода, будьте осторожны с некоторыми языками (хотя большинство должно быть в порядке, если алгоритм хорошо спроектирован) ».
  3. Нет проблем с использованием getchar_unlocked () даже в многопоточной среде, если поток, использующий его, является единственным потоком, обращающимся к объекту файла
  4. Еще одно отличие getchar () состоит в том, что это не стандартная библиотечная функция C, а POSIX-функция. Это может не работать на компиляторах на базе Windows.
  5. Это известный факт, что scanf () быстрее, чем cin, а getchar () быстрее, чем scanf () в целом. getchar_unlocked () быстрее, чем getchar (), следовательно, самый быстрый из всех.
  6. Аналогично, есть getc_unlocked () putc_unlocked () и putchar_unlocked (), которые являются не поточно-ориентированными версиями getc (), putc () и putchar () соответственно.

    // Простая программа на C для демонстрации
    // работа putchar_unlocked ()
    #include <stdio.h>

    int main()

    {

        // Синтаксис такой же, как getchar ()

        char c = getchar_unlocked();

      

        putchar_unlocked(c);

      

        return 0;

    }

    Input: g
    Output: g
    

В качестве упражнения читатели могут попробовать решения, приведенные здесь с помощью getchar_unlocked (), и сравнить производительность с getchar ().

Рекомендуемые посты:

getchar_unlocked () — более быстрый ввод в C / C ++ для конкурентного программирования

0.00 (0%) 0 votes