getchar_unlocked()类似于getchar(),但它不是线程安全的。下面是一个示例代码。

// A simple C program to demonstrate
// working of getchar_unlocked()
#include <stdio.h>
int main()
{
    // Syntax is same as getchar()
    char c = getchar_unlocked();
    printf("Entered character is %c", c);
    return 0;
}
输入:g
输出:输入的字符是g

以下是一些重点:

  1. 由于它不是线程安全的,因此避免了所有互斥的开销,并且它比getchar()更快。
  2. 对于竞争性编程问题特别有用“ 警告:大I / O数据,请注意某些语言(尽管如果算法设计得很好,大多数应该没问题) ”。
  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()的非线程安全版本。
    // A simple C program to demonstrate
    // working of putchar_unlocked()
    #include <stdio.h>
    int main()
    {
        // Syntax is same as getchar()
        char c = getchar_unlocked();
        putchar_unlocked(c);
        return 0;
    }
    输入:g
    输出:g

    getchar_unlocked() – 用于竞争性编程的C / C ++中更快的输入-IDC帮帮忙