[ HTML ] [ Java ] [ Bahasa C ]


Minggu, Mei 02, 2021

Fungsi getchar_unlocked() pada Bahasa C

getchar_unlocked() adalah sama seperti getchar() dengan exception dan tidak aman digunakan untuk thread. Perhatikan contoh kode program berikut ini.

// Program sederhana untuk

// mendemonstrasikan cara

// kerja dari

// getchar_unlocked() dalam

// bahasa C

#include <stdio.h>

 

int main()

{

// Sintak berikut memiliki

// kesamaan dengan getchar()

char c = getchar_unlocked();

 

printf("Karakter yang diinput"

" adalah %c", c);

 

return 0;

}

Input:
g

Output:
Karakter yang diinput adalah g

Perhatikan beberapa point penting berikut ini:
satu, Karena tidak aman untuk thread, semua overhead pengecualian bersama dihindari dan lebih cepat daripada getchar().

dua, Akan sangat berguna untuk pemrograman kompetitif dengan "Warning: Large I/O data, be careful with certain languages (though most should be OK if the algorithm is well designed".

tiga, Tidak terdapat isu dengan menggunakan getchar_unlocked() meskipun dalam lingkungan multithreaded selama thread yang digunakan dan hanya thread yang mengakses file object.

empat, Perbedaan lainnya terhadap getchar(), dimana getchar_unlocked() bukan bagian dari library fungsi standar C, tetapi sebuah fungsi POSIX. Fungsi ini mungkin tidak akan bekerja pada kompilator berbasis Windows.

lima, Merupakan fakta bahwa scanf() lebih cepat dari pada cin dan getchar() lebih cepat daripada scanf() secara umum. getchar_unlocked() lebih cepat daripada getchar(), sekaligus lebih cepat daripada semuanya.

enam, Terdapat getc_unlocked(), putc_unlocked(), dan putchar_unlocked() merupakan versi non-thread-safe masing-masing dari getc(), putc(), dan putchar().

// Program sederhana untuk

// mendemonstrasikan cara

// kerja dari

// putchar_unlocked() dalam

// bahasa C

#include <stdio.h>

 

int main()

{

// Sintak bekerja sama seperti

// getchar()

char c = getchar_unlocked();

 

putchar_unlocked(c);

 

return 0;

}

Input:
g

Output:
g

5 komentar:

  1. Apa yang dimaksud dengan getchar_unlocked() pada bahasa C?

    BalasHapus
    Balasan
    1. getchar_unlocked() adalah mirip dengan getchar() pada bahasa C, dengna pengecualian bahwa penggunaan dari fungsi tersebut tidak aman jika digunakan untuk thread.

      Karena bukan merupakan suatu fungsi yang aman untuk thread, maka semua overhead timbal balik pengecualian akan dihindari dan prosesnya akan lebih cepat daripada getchar().

      Hapus
  2. Apa perbedaan antara getchar_unlocked() dan getchar() pada bahasa C?

    BalasHapus
    Balasan
    1. perbedaan antara getchar_unlocked() dan getchar() adalah fungsi getchar_unlocked() bukan bagian dari library standar C, melainkan bagian dari fungsi POSIX, sehingga hal ini dapat mengakibatkan fungsi tersebut tidak dapat bekerja pada kompilator berbasis windows.

      Hapus
    2. getchar_unlocked() bekerja lebih cepat daripada getchar(), dan merupakan yang paling cepat diantara fungsi input lainnya dalam bahasa C (seperti scanf()).

      Hapus

Respon komentar 7 x 24 jam, so please be patient :D