getchar_unlocked() es similar a getchar() con la excepción de que no es seguro para subprocesos. Esta función se puede usar de forma segura en un programa de subprocesos múltiples si y solo si se invocan cuando el subproceso que invoca posee el objeto (ARCHIVO*), como es la situación después de llamar a flockfile() o ftrylockfile().
Sintaxis:
int getchar_unlocked(void);
Ejemplo:
Input: g
C++
// C++ program to demonstrate // working of getchar_unlocked() #include <iostream> using namespace std; int main() { // Syntax is same as getchar() char c = getchar_unlocked(); cout << "Entered character is " << c; return 0; } // This code is contributed by SUBHAMSINGH10.
C
// 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; }
Producción
Entered character is g
Los siguientes son algunos puntos importantes:
- Dado que no es seguro para subprocesos, se evitan todos los gastos generales de exclusión mutua y es más rápido que getchar().
- Puede ser especialmente útil para problemas de programación competitivos con «Advertencia: datos de E/S grandes, tenga cuidado con ciertos lenguajes (aunque la mayoría debería estar bien si el algoritmo está bien diseñado)».
- No hay problema con el uso de getchar_unlocked() incluso en un entorno de subprocesos múltiples, siempre que el subproceso que lo usa sea el único subproceso que accede al objeto de archivo
- Una diferencia más con getchar() es que no es una función de biblioteca estándar de C, sino una función POSIX. Puede que no funcione en compiladores basados en Windows.
- Es un hecho conocido que scanf() es más rápido que cin y getchar() es más rápido que scanf() en general. getchar_unlocked() es más rápido que getchar(), por lo tanto, el más rápido de todos.
- Del mismo modo, hay getc_unlocked(), putc_unlocked() y putchar_unlocked(), que son versiones no seguras para subprocesos de getc(), putc() y putchar(), respectivamente.
Ejemplo:
Input: g
C++
// C++ program to demonstrate // working of putchar_unlocked() #include <iostream> using namespace std; int main() { // Syntax is same as getchar() char c = getchar_unlocked(); putchar_unlocked(c); return 0; } //This code is contributed by Shubham Singh
C
// 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; }
Producción
g
Como ejercicio, los lectores pueden probar las soluciones dadas aquí con getchar_unlocked() y comparar el rendimiento con getchar().
Este artículo es una contribución de Ayush Saluja . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA