getchar_unlocked() is similar to getchar() with the exception that it is not thread safe. Below is an example code.
Input: g Output: Entered character is g
Following are some important points:
- Since it is not thread safe, all overheads of mutual exclusion are avoided and it is faster than getchar().
- Can be especially useful for competitive programming problems with “Warning: Large I/O data, be careful with certain languages (though most should be OK if the algorithm is well designed)”.
- There is no issue with using getchar_unlocked() even in multithreaded environment as long as the thread using it is the only thread accessing file object
- One more difference with getchar() is, it is not a C standard library function, but a POSIX function. It may not work on Windows based compilers.
- It is a known fact than scanf() is faster than cin and getchar() is faster than scanf() in general. getchar_unlocked() is faster than getchar(), hence fastest of all.
- Similarly, there are getc_unlocked() putc_unlocked(), and putchar_unlocked() which are non-thread-safe versions of getc(), putc() and putchar() respectively.
// A simple C program to demonstrate
// working of putchar_unlocked()
// Syntax is same as getchar()
c = getchar_unlocked();
Input: g Output: g
As an exercise, the readers may try solutions given here with getchar_unlocked() and compare performance with getchar().
This article is contributed by Ayush Saluja. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
- Writing code faster during Competitive Programming in C++
- Tips and Tricks for Competitive Programmers | Set 2 (Language to be used for Competitive Programming)
- Input/Output from external file in C/C++, Java and Python for Competitive Programming
- Python Input Methods for Competitive Programming
- Input/Output from external file in C/C++, Java and Python for Competitive Programming | Set 2
- Top 10 Algorithms and Data Structures for Competitive Programming
- How to begin with Competitive Programming?
- How to become a master in competitive programming?
- Competitive Programming: Conquering a given problem
- Fast I/O for Competitive Programming
- A Better Way To Approach Competitive Programming
- Bitwise Hacks for Competitive Programming
- Some important shortcuts in Competitive Programming
- Fast I/O in Java in Competitive Programming
- Frequency Measuring Techniques for Competitive Programming
- Graph implementation using STL for competitive programming | Set 1 (DFS of Unweighted and Undirected)
- Graph implementation using STL for competitive programming | Set 2 (Weighted graph)
- Writing C/C++ code efficiently in Competitive programming
- Prefix Sum Array - Implementation and Applications in Competitive Programming
- C++ tricks for competitive programming (for C++ 11)